public void TestGameAction() { var originalBoard = new GameBoard(); IAction originalAction = new Setup(); var original = new GameAction(GamePhase.None, originalBoard, originalAction); Assert.AreEqual(GamePhase.None, original.State); Assert.AreSame(originalBoard, original.Board); Assert.AreSame(originalAction, original.Action); var clone = original.DeepClone(); Assert.AreEqual(GamePhase.None, clone.State); Assert.AreNotSame(originalBoard, clone.Board); Assert.AreNotSame(originalAction, clone.Action); original.State = GamePhase.Player1PreSetup; Assert.AreEqual(GamePhase.Player1PreSetup, original.State); Assert.AreEqual(GamePhase.None, clone.State); }