예제 #1
0
        public void IsFrozenTest(bool shouldFreeze)
        {
            // Arrange
            var gnomePositions = new Dictionary <IGnome, BoardPosition>();
            var board          = MockRepository.GenerateMock <IBoard>();
            var gnomeMovement  = new GnomeMovement(board, gnomePositions);
            var gnome1         = new Gnome(1, 1, 1, gnomeMovement);
            var gnome2         = new Gnome(1, 1, 1, gnomeMovement);

            gnomePositions.Add(gnome1, new BoardPosition(0, 0, null));
            gnomePositions.Add(gnome2, new BoardPosition(0, shouldFreeze ? 0 : 1, null));

            // Act
            var isFrozen = gnomeMovement.IsFrozen(gnome1);

            // Assert
            Assert.AreEqual(shouldFreeze, isFrozen);
        }
예제 #2
0
        public void TryMoveEast(bool isBlocked)
        {
            // Arrange
            var gnomePositions = new Dictionary <IGnome, BoardPosition>();
            var board          = MockRepository.GenerateMock <IBoard>();
            var gnomeMovement  = new GnomeMovement(board, gnomePositions);
            var gnome          = new Gnome(1, 1, 1, gnomeMovement);

            gnomePositions.Add(gnome, startPosition);
            var eastPosition = new BoardPosition(2, 1, isBlocked ? wallTile : corridorTile);

            board.Stub(x => x.GetPosition(2, 1)).Return(eastPosition);

            // Act
            var couldMove = gnomeMovement.TryMove(gnome, Direction.East);

            // Assert
            Assert.AreEqual(isBlocked, !couldMove);
            var expectedPosition = isBlocked ? startPosition : eastPosition;

            Assert.AreEqual(expectedPosition, gnomePositions[gnome]);
        }