When testing a method's functional correctness, What does it mean for a method to be correct?
1) it compiles and runs without errors
2) it does what it is supposed to do, and it doesn't do what it is not supposed to do
3) it passes all the test cases
4) it does not have any performance issues
5) e. none of the above