If I create a function to calculate the square root of a number, I suppose i should write a single unit test (maybe two, to test how it handles negative numbers).
But what if I have a function which has a lot more possible outcomes. E.g. let's say I have a (simplified) function to calculate your tax rate. It would depend on your income group, but also the year you want to calculate, as tax rates may change over time. Lets say there are 3 income groups and I want to test 10 years back. That's thirty unit tests(!).
How do you test functions with that many outcomes? I could obviously make a loop inside the unit test, but doesn't that kinda violate the concept of a unit test?