When you unit-test your ‘equal’ method, you should all of following conditions.
The equals method implements an equivalence relation:
1. It is reflexive: for any reference value x, x.equals(x) should return true.
2. It is symmetric: for any reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
3. It is transitive: for any reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
4. It is consistent: for any reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false.
5. For any reference value x, x.equals(null) should return false.
The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any reference values x and y, this method returns true if and only if x and y refer to the same object (x==y has the value true).