The Triangle
ideqa.blogspot.com
ideqa.blogspot.com
There are many ways of simplifying this. For example:
"You need 3 test cases for one of the numbers being 0. You need 3 test cases for one of the numbers being a negative. ... You need your null case (where all the inputs are 0’s)."
Or, you could just factor out that input validation into a single function, is_valid_length(), that you call on each of the three inputs to make sure that it's greater than or equal to zero. Then, you'd just need to test that function once.
So under those conditions, where the code has been written and it's your job to test it, what is your list of test cases?
I write safety-critical software, and I test safety-critical software written by others. I fully expect all of these cases to be tested, including feeding the program with non-numeric values, negative values, junk, and floating point numbers that are equal under various levels of precision.
If you're not doing this, you're deliberately choosing to sacrifice the program's quality for your time and effort spent testing. That's a choice you can, or course, make, but you should be very clear to yourself, if not your users, that you're doing it.
> I deduce that you've only worked
> with a limited type of programmer.
More technically, you abduce that.