public void TestEquality(string firstMoveStringNotation, GameMove second, bool expectedEquals) { var first = GameMove.FromStringNotation(firstMoveStringNotation); Assert.That(first, Is.Not.Null); Assert.That(second, Is.Not.Null); Assert.That(first.Equals(second), Is.EqualTo(expectedEquals)); Assert.That(second.Equals(first), Is.EqualTo(expectedEquals)); Assert.That(Equals(first, second), Is.EqualTo(expectedEquals)); Assert.That(EqualityComparer <GameMove> .Default.Equals(first, second), Is.EqualTo(expectedEquals)); Assert.That(first == second, Is.EqualTo(expectedEquals)); Assert.That(first != second, Is.EqualTo(!expectedEquals)); if (expectedEquals) { Assert.That(first.GetHashCode(), Is.EqualTo(second.GetHashCode())); } }
public static GameResult Eval(GameMove move1, GameMove move2) { // Rock Vs. ### if (move1.Equals(Rock)) { if (move2.Equals(Rock)) { return(Draw); } else if (move2.Equals(Paper)) { return(Loose); } else if (move2.Equals(Scissor)) { return(Win); } else if (move2.Equals(Spock)) { return(Loose); } else if (move2.Equals(Lizard)) { return(Win); } } else if (move1.Equals(Paper)) { if (move2.Equals(Rock)) { return(Win); } else if (move2.Equals(Paper)) { return(Draw); } else if (move2.Equals(Scissor)) { return(Loose); } else if (move2.Equals(Lizard)) { return(Loose); } else if (move2.Equals(Spock)) { return(Win); } } else if (move1.Equals(Scissor)) { if (move2.Equals(Rock)) { return(Loose); } else if (move2.Equals(Paper)) { return(Win); } else if (move2.Equals(Scissor)) { return(Draw); } else if (move2.Equals(Lizard)) { return(Win); } else if (move2.Equals(Spock)) { return(Loose); } } else if (move1.Equals(Lizard)) { if (move2.Equals(Rock)) { return(Loose); } else if (move2.Equals(Paper)) { return(Win); } else if (move2.Equals(Scissor)) { return(Loose); } else if (move2.Equals(Lizard)) { return(Draw); } else if (move2.Equals(Spock)) { return(Win); } } else if (move1.Equals(Spock)) { if (move2.Equals(Rock)) { return(Win); } else if (move2.Equals(Paper)) { return(Loose); } else if (move2.Equals(Scissor)) { return(Win); } else if (move2.Equals(Lizard)) { return(Loose); } else if (move2.Equals(Spock)) { return(Draw); } } return(new GameResult(null, "Unknown Result")); }