Ejemplo n.º 1
0
            private static MementoNode NodeFromElement(GameMemento previous, XElement element)
            {
                var type = element.Attribute("type").Value;

                IUpdateAction action;

                switch (type)
                {
                case MoveBallToken: {
                    var(src, dst) = MoveActionParamsFromElement(element.Element(MoveParamsElement));
                    action        = MoveBallAction.New(src, dst);
                    break;
                }

                case MovePieceToken: {
                    var(src, dst) = MoveActionParamsFromElement(element.Element(MoveParamsElement));
                    action        = MovePieceAction.New(src, dst);
                    break;
                }

                case PassToken:
                    action = new PassAction();
                    break;

                default: throw new ArgumentOutOfRangeException();
                }
                return(previous.Update(action));
            }
Ejemplo n.º 2
0
        private static void AssertMoveBallSucceeded(GameState before, GameState after, MoveBallAction action)
        {
            CollectionAssert.AreEquivalent(before.PositionsForPlayer(before.CurrentPlayer),
                                           after.PositionsForPlayer(before.CurrentPlayer));
            Assert.AreEqual(before.BallCarrierForPlayer(before.CurrentPlayer), action.Src);
            Assert.AreEqual(after.BallCarrierForPlayer(before.CurrentPlayer), action.Dst);

            AssertWhetherPlayerHasChanged(before, after);
        }