Ejemplo n.º 1
0
        public void GetBitColumn_ShouldReturnAccurateColumn_GivenFullColumn()
        {
            var boardColumn = new BoardColumn(0, 0, null, null, null);

            boardColumn.SetSpace(DiscColor.Black);
            boardColumn.SetSpace(DiscColor.Black);
            boardColumn.SetSpace(DiscColor.Black);

            boardColumn.SetSpace(DiscColor.Red);
            boardColumn.SetSpace(DiscColor.Red);
            boardColumn.SetSpace(DiscColor.Red);

            var bitColumn = boardColumn.GetBitColumn();

            Assert.IsTrue(BitBoardHelpers.CheckSingleBit(bitColumn.BlackDiscs, 0));
            Assert.IsTrue(BitBoardHelpers.CheckSingleBit(bitColumn.BlackDiscs, 1));
            Assert.IsTrue(BitBoardHelpers.CheckSingleBit(bitColumn.BlackDiscs, 2));
            Assert.IsFalse(BitBoardHelpers.CheckSingleBit(bitColumn.BlackDiscs, 3));
            Assert.IsFalse(BitBoardHelpers.CheckSingleBit(bitColumn.BlackDiscs, 4));
            Assert.IsFalse(BitBoardHelpers.CheckSingleBit(bitColumn.BlackDiscs, 5));

            Assert.IsFalse(BitBoardHelpers.CheckSingleBit(bitColumn.RedDiscs, 0));
            Assert.IsFalse(BitBoardHelpers.CheckSingleBit(bitColumn.RedDiscs, 1));
            Assert.IsFalse(BitBoardHelpers.CheckSingleBit(bitColumn.RedDiscs, 2));
            Assert.IsTrue(BitBoardHelpers.CheckSingleBit(bitColumn.RedDiscs, 3));
            Assert.IsTrue(BitBoardHelpers.CheckSingleBit(bitColumn.RedDiscs, 4));
            Assert.IsTrue(BitBoardHelpers.CheckSingleBit(bitColumn.RedDiscs, 5));
        }
Ejemplo n.º 2
0
        public void CheckVictory_ShouldReturnNone_GivenNonWinningThirdRowHorizontals(
            int blackOne, int blackTwo,
            int redOne, int redTwo)
        {
            var board = BitBoardHelpers.GetNewBoard();

            // Fill first row with non winners
            board = BitBoardHelpers.BitBoardMove(in board, 0, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, 1, DiscColor.Red);
            board = BitBoardHelpers.BitBoardMove(in board, 2, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, 3, DiscColor.Red);
            board = BitBoardHelpers.BitBoardMove(in board, 4, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, 5, DiscColor.Red);
            board = BitBoardHelpers.BitBoardMove(in board, 6, DiscColor.Black);

            // Fill second row with non winners
            board = BitBoardHelpers.BitBoardMove(in board, 0, DiscColor.Red);
            board = BitBoardHelpers.BitBoardMove(in board, 1, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, 2, DiscColor.Red);
            board = BitBoardHelpers.BitBoardMove(in board, 3, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, 4, DiscColor.Red);
            board = BitBoardHelpers.BitBoardMove(in board, 5, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, 6, DiscColor.Red);

            board = BitBoardHelpers.BitBoardMove(in board, blackOne, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, blackTwo, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, redOne, DiscColor.Red);
            board = BitBoardHelpers.BitBoardMove(in board, redTwo, DiscColor.Red);

            var winner = BitBoardHelpers.CheckVictory(in board);

            Assert.AreEqual(DiscColor.None, winner);
        }
Ejemplo n.º 3
0
        public void PossibleFallingDiagonals_ShouldReturnZero_GivenEmptyBoard()
        {
            var board = BitBoardHelpers.GetNewBoard();

            Assert.AreEqual(0.0m, BitBoardHelpers.ScorePossibleFallingDiagonals(board, DiscColor.Red));
            Assert.AreEqual(0.0m, BitBoardHelpers.ScorePossibleFallingDiagonals(board, DiscColor.Black));
        }
Ejemplo n.º 4
0
        public void GetNewBoard_ShouldReturnBoardWithAllOpenColumns()
        {
            var board = BitBoardHelpers.GetNewBoard();

            Assert.IsTrue(BitBoardHelpers.IsColumnOpen(board, 0));
            Assert.IsTrue(BitBoardHelpers.IsColumnOpen(board, 1));
            Assert.IsTrue(BitBoardHelpers.IsColumnOpen(board, 2));
            Assert.IsTrue(BitBoardHelpers.IsColumnOpen(board, 3));
            Assert.IsTrue(BitBoardHelpers.IsColumnOpen(board, 4));
            Assert.IsTrue(BitBoardHelpers.IsColumnOpen(board, 5));
            Assert.IsTrue(BitBoardHelpers.IsColumnOpen(board, 6));
        }
Ejemplo n.º 5
0
        public void BitBoardMove_ShouldReturnOpenColumn_GivenFiveMovesInSameColumn(int column)
        {
            var board = BitBoardHelpers.GetNewBoard();

            board = BitBoardHelpers.BitBoardMove(in board, column, DiscColor.Red);
            board = BitBoardHelpers.BitBoardMove(in board, column, DiscColor.Red);
            board = BitBoardHelpers.BitBoardMove(in board, column, DiscColor.Red);
            board = BitBoardHelpers.BitBoardMove(in board, column, DiscColor.Red);
            board = BitBoardHelpers.BitBoardMove(in board, column, DiscColor.Red);

            Assert.IsTrue(BitBoardHelpers.IsColumnOpen(board, column));
        }
Ejemplo n.º 6
0
        public void CheckVictory_ShouldReturnNone_GivenThreeBlackMovesInColumn(int column)
        {
            var board = BitBoardHelpers.GetNewBoard();

            board = BitBoardHelpers.BitBoardMove(in board, column, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, column, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, column, DiscColor.Black);

            var winner = BitBoardHelpers.CheckVictory(board);

            Assert.AreEqual(DiscColor.None, winner);
        }
Ejemplo n.º 7
0
        public void CheckVictory_ShouldReturnBlack_GivenBlackWinningColumn(int column)
        {
            var board = BitBoardHelpers.GetNewBoard();

            board = BitBoardHelpers.BitBoardMove(in board, column, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, column, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, column, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, column, DiscColor.Black);

            var winner = BitBoardHelpers.CheckVictory(board);

            Assert.AreEqual(DiscColor.Black, winner);
        }
Ejemplo n.º 8
0
        public void CheckVictory_ShouldReturnNone_GivenNonWinningFirstRowHorizontals(
            int blackOne, int blackTwo,
            int redOne, int redTwo)
        {
            var board = BitBoardHelpers.GetNewBoard();

            board = BitBoardHelpers.BitBoardMove(in board, blackOne, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, blackTwo, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, redOne, DiscColor.Red);
            board = BitBoardHelpers.BitBoardMove(in board, redTwo, DiscColor.Red);

            var winner = BitBoardHelpers.CheckVictory(in board);

            Assert.AreEqual(DiscColor.None, winner);
        }
Ejemplo n.º 9
0
        public void CheckVictory_ShouldReturnNone_GivenThreeBlackMovesInRow(
            int firstColumn,
            int secondColumn,
            int thirdColumn)
        {
            var board = BitBoardHelpers.GetNewBoard();

            board = BitBoardHelpers.BitBoardMove(in board, firstColumn, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, secondColumn, DiscColor.Black);
            board = BitBoardHelpers.BitBoardMove(in board, thirdColumn, DiscColor.Black);

            var winner = BitBoardHelpers.CheckVictory(board);

            Assert.AreEqual(DiscColor.None, winner);
        }
Ejemplo n.º 10
0
        public void CheckVictory_ShouldReturnRed_GivenFourRedMovesInRow(
            int firstColumn,
            int secondColumn,
            int thirdColumn,
            int fourthColumn)
        {
            var board = BitBoardHelpers.GetNewBoard();

            board = BitBoardHelpers.BitBoardMove(in board, firstColumn, DiscColor.Red);
            board = BitBoardHelpers.BitBoardMove(in board, secondColumn, DiscColor.Red);
            board = BitBoardHelpers.BitBoardMove(in board, thirdColumn, DiscColor.Red);
            board = BitBoardHelpers.BitBoardMove(in board, fourthColumn, DiscColor.Red);

            var winner = BitBoardHelpers.CheckVictory(board);

            Assert.AreEqual(DiscColor.Red, winner);
        }