public static void TestEquality()
{
DetailedMove move1 = new DetailedMove(new Position(File.E, 2), new Position(File.E, 4), Player.White, null, new Pawn(Player.White), false, CastlingType.None);
DetailedMove move2 = new DetailedMove(new Position(File.E, 2), new Position(File.E, 4), Player.White, null, new Pawn(Player.White), false, CastlingType.None);
DetailedMove move3 = null;
DetailedMove 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());
}