Ejemplo n.º 1
0
 private void CheckPieceIsOnBoard(IGamePiece piece)
 {
     if (!PiecesOnBoard.Contains(piece))
     {
         throw new ArgumentException("Piece not currently on the board.", "Piece");
     }
 }
Ejemplo n.º 2
0
 public void OnPieceAddedToChain(IGamePiece i_piece)
 {
     if (GamePiece == i_piece)
     {
         SetIsOnProperty(true);
     }
 }
Ejemplo n.º 3
0
        public void DoesMatchCombo_ReturnsAsExpected(List <int> i_comboAttempt, bool i_expectedMatch)
        {
            IMonsterData mockMonsterData = Substitute.For <IMonsterData>();

            mockMonsterData.GetAttackCombo().Returns(new List <int>()
            {
                1, 2, 3
            });

            List <IGamePiece> comboAttempt = new List <IGamePiece>();

            if (i_comboAttempt != null)
            {
                foreach (int pieceType in i_comboAttempt)
                {
                    IGamePiece mockPiece = Substitute.For <IGamePiece>();
                    mockPiece.PieceType.Returns(pieceType);
                    comboAttempt.Add(mockPiece);
                }
            }

            GameMonster systemUnderTest = new GameMonster(mockMonsterData);

            bool doesMatch = systemUnderTest.DoesMatchCombo(comboAttempt);

            Assert.AreEqual(i_expectedMatch, doesMatch);
        }
Ejemplo n.º 4
0
 private void CheckPieceIsNotOnBoard(IGamePiece piece)
 {
     if (PiecesOnBoard.Contains(piece))
     {
         throw new ArgumentException("Piece is already on the board.", "Piece");
     }
 }
Ejemplo n.º 5
0
        private IGamePiece CreateMockPieceWithIndex(int i_index)
        {
            IGamePiece mockPiece = Substitute.For <IGamePiece>();

            mockPiece.Index.Returns(i_index);

            return(mockPiece);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Add piece to a specified location.
        /// </summary>
        /// <param name="piece">Game piece to add to board.</param>
        /// <param name="location">Location to add game piece.</param>
        public void PlacePiece(IGamePiece piece, IEnumerable <int> location)
        {
            CheckPieceIsNotOnBoard(piece);

            var validLocation = IsLocationValid(location.ToArray());

            AddPiece(piece, validLocation);
        }
Ejemplo n.º 7
0
        private void DeletePiece(IGamePiece piece)
        {
            var location = FindPiece(piece);

            board[location[0], location[1]].Remove(piece);

            PiecesOnBoard.Remove(piece);
        }
Ejemplo n.º 8
0
 public bool IsValidPieceInChain(IGamePiece i_piece, List <IGamePiece> i_chain)
 {
     return(DuplicatePieceValidator.IsValidPieceInChain(i_piece, i_chain) &&
            DiagonalPieceValidator.IsValidPieceInChain(i_piece, i_chain) &&
            StraightLinesOnlyValidator.IsValidPieceInChain(i_piece, i_chain) &&
            MaxLengthValidator.IsValidPieceInChain(i_piece, i_chain) &&
            SelectablePieceValidator.IsValidPieceInChain(i_piece, i_chain));
 }
Ejemplo n.º 9
0
 public void StartChain(IGamePiece i_piece)
 {
     if (IsNoChain())
     {
         CreateChain();
         AddPieceToChain(i_piece);
         SendPieceAddedEvent(i_piece);
     }
 }
Ejemplo n.º 10
0
        /// <summary>
        /// Move a specified piece from a source location to a destination location.
        /// </summary>
        /// <param name="piece">Piece to move</param>
        /// <param name="location">Location to move the piece from</param>
        /// <param name="destLocation">Location to move the piece to</param>
        public void MovePiece(IGamePiece piece, IEnumerable <int> destLocation)
        {
            CheckPieceIsOnBoard(piece);

            var destinationLocation = IsLocationValid(destLocation.ToArray());

            DeletePiece(piece);
            AddPiece(piece, destinationLocation);
        }
Ejemplo n.º 11
0
 /// <summary>
 /// Adds a specified game piece to a tile.
 /// </summary>
 /// <param name="element">The game piece to add to the tile.</param>
 public void AddGamePiece(IGamePiece element)
 {
     if (element is HeroClixCharacter &&
         gamePieces.Count(x => x.GetType().Equals(typeof(HeroClixCharacter))) > 0)
     {
         throw new InvalidOperationException("A character is already occupying this tile.");
     }
     gamePieces.Add(element);
 }
        public void IsValidPiece_IsFalse_IfIncomingPiece_IsNotSelectable()
        {
            IGamePiece mockPiece = Substitute.For <IGamePiece>();

            mockPiece.IsSelectable().Returns(false);
            bool isValid = systemUnderTest.IsValidPieceInChain(mockPiece, new List <IGamePiece>());

            Assert.IsFalse(isValid);
        }
Ejemplo n.º 13
0
        public void WhenNoChain_StartChain_SendsMessageWithAddedPiece()
        {
            CreateChainManager_WithNoChain();
            IGamePiece mockPiece = Substitute.For <IGamePiece>();

            systemUnderTest.StartChain(mockPiece);

            MyMessenger.Received().Send <IGamePiece>(GameMessages.PIECE_ADDED_TO_CHAIN, mockPiece);
        }
Ejemplo n.º 14
0
        public GamePiecePM(IGamePiece i_piece) : base(i_piece)
        {
            GamePiece = i_piece;

            ListenForMessages(true);

            UpdateProperties();
            ResetIsOnProperty();
        }
Ejemplo n.º 15
0
        public void WhenPieceIsAddedToChain_IfNotPMsPiece_IsOnProperty_IsFalse()
        {
            IGamePiece  notSamePiece    = Substitute.For <IGamePiece>();
            GamePiecePM systemUnderTest = CreateSystem();

            systemUnderTest.OnPieceAddedToChain(notSamePiece);

            Assert.IsFalse(systemUnderTest.ViewModel.GetPropertyValue <bool>(GamePiecePM.IS_ON_PROPERTY));
        }
Ejemplo n.º 16
0
        public void MovePiece(ref List <IGameField> fields, int pieceTurn, int dieRoll)
        {
            IGamePiece piece = GetPiece(pieceTurn);

            IGameField currentField = fields[piece.Position]; // Used so we can reset the earlier used position
            IGameField fieldToMove  = fields[(piece.Position + dieRoll)];

            currentField.RemovePiece(piece);
        }
Ejemplo n.º 17
0
        public void WhenNoChain_StartChain_AddsPieceToChain()
        {
            CreateChainManager_WithNoChain();
            IGamePiece mockPiece = Substitute.For <IGamePiece>();

            systemUnderTest.StartChain(mockPiece);

            Assert.Contains(mockPiece, systemUnderTest.Chain);
        }
Ejemplo n.º 18
0
        public void TestStraightLineOnlyLogic(int i_firstIndex, int i_secondIndex, int i_incomingIndex, bool i_expectedValidation)
        {
            SetCurrentDungeonToAllowStraightLinesOnly(true);
            List <IGamePiece> mockChain         = CreateChainFromTwoIndices(i_firstIndex, i_secondIndex);
            IGamePiece        mockIncomingPiece = CreateMockPieceWithIndex(i_incomingIndex);

            bool isValid = systemUnderTest.IsValidPieceInChain(mockIncomingPiece, mockChain);

            Assert.AreEqual(i_expectedValidation, isValid);
        }
Ejemplo n.º 19
0
        public void WhenChainCanceled_PiecesInChain_AreFailed()
        {
            systemUnderTest.Chain = new List <IGamePiece>();
            IGamePiece mockPiece = Substitute.For <IGamePiece>();

            systemUnderTest.Chain.Add(mockPiece);

            systemUnderTest.CancelChain();

            mockPiece.Received().PieceFailedMatch();
        }
Ejemplo n.º 20
0
 private void RandomizeBoard()
 {
     for (int i = 0; i < BoardPieces.GetLength(0); ++i)
     {
         for (int j = 0; j < BoardPieces.GetLength(1); ++j)
         {
             IGamePiece piece = BoardPieces[i, j];
             piece.Randomize();
         }
     }
 }
Ejemplo n.º 21
0
        public void WhenActiveChain_ContinuingChain_IfChainIsValid_AddPieceToChain()
        {
            CreateChainManager_WithEmptyActiveChain();
            ChainValidator.IsValidPieceInChain(Arg.Any <IGamePiece>(), Arg.Any <List <IGamePiece> >()).Returns(true);

            IGamePiece mockPiece = Substitute.For <IGamePiece>();

            systemUnderTest.ContinueChain(mockPiece);

            Assert.Contains(mockPiece, systemUnderTest.Chain);
        }
Ejemplo n.º 22
0
        private List <IGamePiece> CreateChainFromTwoIndices(int i_first, int i_second)
        {
            List <IGamePiece> mockChain   = new List <IGamePiece>();
            IGamePiece        firstPiece  = CreateMockPieceWithIndex(i_first);
            IGamePiece        secondPiece = CreateMockPieceWithIndex(i_second);

            mockChain.Add(firstPiece);
            mockChain.Add(secondPiece);

            return(mockChain);
        }
Ejemplo n.º 23
0
 private bool IsValidPieceForChain(IGamePiece i_piece, List <IGamePiece> i_chainInProgress, List <int> i_targetChain)
 {
     if (i_chainInProgress.Contains(i_piece) || i_piece.PieceType != i_targetChain[i_chainInProgress.Count])
     {
         return(false);
     }
     else
     {
         return(true);
     }
 }
Ejemplo n.º 24
0
        public void WhenActiveChain_ContinuingChain_IfChainIsValid_SendsPieceAddedEvent()
        {
            CreateChainManager_WithEmptyActiveChain();
            ChainValidator.IsValidPieceInChain(Arg.Any <IGamePiece>(), Arg.Any <List <IGamePiece> >()).Returns(true);

            IGamePiece mockPiece = Substitute.For <IGamePiece>();

            systemUnderTest.ContinueChain(mockPiece);

            MyMessenger.Received().Send <IGamePiece>(GameMessages.PIECE_ADDED_TO_CHAIN, mockPiece);
        }
        public bool IsValidPieceInChain(IGamePiece i_piece, List <IGamePiece> i_chain)
        {
            if (i_chain.Count == 0 || i_chain.Count == 1 || !CurrentDungeon.Data.StraightMovesOnly())
            {
                return(true);
            }

            int  direction      = GetDirectionOfChain(i_chain);
            bool isStraightLine = IsStraightLine(i_piece.Index, i_chain[i_chain.Count - 1].Index, direction);

            return(isStraightLine);
        }
Ejemplo n.º 26
0
 public void ContinueChain(IGamePiece i_piece)
 {
     if (IsActiveChain() && ChainValidator.IsValidPieceInChain(i_piece, mChain))
     {
         AddPieceToChain(i_piece);
         SendPieceAddedEvent(i_piece);
     }
     else
     {
         CancelChain();
     }
 }
Ejemplo n.º 27
0
        private void RunDiagonalTest(int i_incomingPieceIndex, int i_lastPlayedPieceIndex, bool i_expectedValidation)
        {
            IGamePiece mockIncomingPiece   = CreateMockPieceWithIndex(i_incomingPieceIndex);
            IGamePiece mockLastPlayedPiece = CreateMockPieceWithIndex(i_lastPlayedPieceIndex);

            List <IGamePiece> mockChain = new List <IGamePiece>();

            mockChain.Add(mockLastPlayedPiece);

            bool isValid = systemUnderTest.IsValidPieceInChain(mockIncomingPiece, mockChain);

            Assert.AreEqual(i_expectedValidation, isValid);
        }
Ejemplo n.º 28
0
        public void IsValidPiece_IsFalse_IfIncomingPiee_IAlreadyInChain()
        {
            ChainValidator_DuplicatePieces systemUnderTest = new ChainValidator_DuplicatePieces();
            IGamePiece        mockPiece = Substitute.For <IGamePiece>();
            List <IGamePiece> mockChain = new List <IGamePiece>()
            {
                mockPiece
            };

            bool isValid = systemUnderTest.IsValidPieceInChain(mockPiece, mockChain);

            Assert.IsFalse(isValid);
        }
Ejemplo n.º 29
0
        public void WhenProcessingChain_IfChainDoesNotMatchAnyMonster_PiecesFailedMatch_IsCalled()
        {
            IGamePiece        mockPiece = Substitute.For <IGamePiece>();
            List <IGamePiece> chain     = new List <IGamePiece>()
            {
                mockPiece
            };

            MonsterManager.DoesMoveMatchAnyCurrentMonsters(Arg.Any <List <IGamePiece> >()).Returns(false);

            systemUnderTest.Process(chain);

            mockPiece.Received().PieceFailedMatch();
        }
Ejemplo n.º 30
0
        public void IfSearchIsEmpty_BoardIsValid()
        {
            IGamePiece[,] mockBoard = new IGamePiece[, ] {
                { new GamePiece(0, 0), new GamePiece(0, 0), new GamePiece(0, 0), new GamePiece(0, 0) },
                { new GamePiece(0, 0), new GamePiece(1, 0), new GamePiece(0, 0), new GamePiece(0, 0) },
                { new GamePiece(0, 0), new GamePiece(2, 0), new GamePiece(0, 0), new GamePiece(0, 0) },
                { new GamePiece(0, 0), new GamePiece(3, 0), new GamePiece(0, 0), new GamePiece(0, 0) }
            };

            MonsterManager.GetCurrentMonsterCombos().Returns(new List <List <int> >());

            bool isOnBoard = systemUnderTest.IsMonsterComboAvailableOnBoard(mockBoard);

            Assert.IsTrue(isOnBoard);
        }
Ejemplo n.º 31
0
 public void Grab(IGamePiece o)
 {
     this.Holding = o;
 }