So...if the main program is creating its own cats with the proper setup to return true for Cat1 and false for Cat2, I'm curious as to how the testing program is failing to verify. Is it substituting its own main with some other Cat objects? In short, even after reading the other comments, I can't figure out how to implement how cat2 loses out to cat1 (other than cat1.fight(cat2) returning true based on the if conditions).