public static void TestEquality()
{
Position position1 = new Position(File.G, 4);
Position position2 = new Position(File.H, 5);
Position position3 = new Position(File.G, 4);
Position position4 = new Position(File.H, 5);
Move move1 = new Move(position1, position2, Player.White);
Move move2 = new Move(position3, position4, Player.White);
Move move3 = null;
Move move4 = null;
Assert.AreEqual(move1, move2, "move1 and move2 should be equal");
Assert.True(move1.Equals(move2), "move1.Equals(move2) should be true");
Assert.True(move2.Equals(move1), "move2.Equals(move1) should be true");
Assert.True(move1 == move2, "move1 == move2 should be true");
Assert.True(move2 == move1, "move2 == move1 should be true");
Assert.True(move3 == move4, "move3 == move4 should be True");
Assert.False(move1 != move2, "move1 != move2 should be false");
Assert.False(move2 != move1, "move2 != move1 should be false");
Assert.AreEqual(move1.GetHashCode(), move2.GetHashCode());
}