In general, if based on our own implementation, the results of two tests will always be the same, should we still include both in case that the implementation is very different in the version for testing?
For example, a Fish should not collide with any other entity, also a Fish should not eat the whole seaweed. The tests for these two seem to be repetitive since a seaweed is an entity and both are just checking if the Fish would turn around; however, if another implementation treats seaweed differently then the tests may not give the same results. Do we include both?
Also, I made HungryFish a subclass of Fish; and since we cannot change constructor, the HungryFish is still there but has nothing but a constructor. In this case, do we still need to write separate (and essentially the same) tests for HungryFish since in other implementation the inheritance may not exist?