Esempio n. 1
0
        public void SanityCheck_GivenInsaneDataDueToWrongNumberOfBlackAndWhiteSquares_ReturnsFalse()
        {
            // Arrange
            var board = new Board(TestBoardSize);
            var solver = new Solver();
            var bogusPieceD = new Piece(
                new[]
                    {
                        //  B
                        //  W
                        // WW
                        new Square(0, 0, Colour.White),
                        new Square(1, 0, Colour.White),
                        new Square(1, 1, Colour.White),
                        new Square(1, 2, Colour.Black)
                    },
                'D');
            var pieceFeeder = new PieceFeeder(Piece.TestPieceA, Piece.TestPieceB, Piece.TestPieceC, bogusPieceD);

            // Act
            var actual = solver.SanityCheck(board, pieceFeeder);

            // Assert
            Assert.That(actual, Is.False);
        }
Esempio n. 2
0
        public void SanityCheck_GivenSaneData_ReturnsTrue()
        {
            // Arrange
            var board = new Board(TestBoardSize);
            var solver = new Solver();
            var pieceFeeder = new PieceFeeder(Piece.TestPieceA, Piece.TestPieceB, Piece.TestPieceC, Piece.TestPieceD);

            // Act
            var actual = solver.SanityCheck(board, pieceFeeder);

            // Assert
            Assert.That(actual, Is.True);
        }
Esempio n. 3
0
        public void SanityCheck_GivenInsaneDataDueToWrongNumberOfSquares_ReturnsFalse()
        {
            // Arrange
            var board = new Board(TestBoardSize);
            var solver = new Solver();
            var pieceFeeder = new PieceFeeder(Piece.TestPieceA, Piece.TestPieceB, Piece.TestPieceC);

            // Act
            var actual = solver.SanityCheck(board, pieceFeeder);

            // Assert
            Assert.That(actual, Is.False);
        }
        public void Permutations_GivenThatTheFeederHasOnePiece_ReturnsNorthEastSouthWestOfTheSinglePieceThenStops()
        {
            // Arrange
            var pieceFeeder = new PieceFeeder(Piece.TestPieceA);

            // Act
            var permutations = pieceFeeder.Permutations.Take(4).ToArray();

            // Assert
            Assert.That(permutations, Has.Length.EqualTo(4));
            Assert.That(permutations, Has.All.Matches<IEnumerable<RotatedPiece>>(rps => rps.Count() == 1));
            Assert.That(permutations, Has.All.Matches<IEnumerable<RotatedPiece>>(rps => rps.First().Piece == Piece.TestPieceA));
            Assert.That(permutations[0].First().Orientation, Is.EqualTo(Orientation.North));
            Assert.That(permutations[1].First().Orientation, Is.EqualTo(Orientation.East));
            Assert.That(permutations[2].First().Orientation, Is.EqualTo(Orientation.South));
            Assert.That(permutations[3].First().Orientation, Is.EqualTo(Orientation.West));
        }
        public void Permutations_GivenThatSomePiecesHaveBeenMadeAvailableViaTheConstructor_ReturnsThePiecesInTheInitialOrderAllWithOrientationNorth()
        {
            // Arrange
            var pieceFeeder = new PieceFeeder(Piece.TestPieceA, Piece.TestPieceB, Piece.TestPieceC, Piece.TestPieceD);

            // Act
            var rotatedPieces = pieceFeeder.Permutations.First().ToArray();

            // Assert
            Assert.That(rotatedPieces, Has.Length.EqualTo(4));
            Assert.That(rotatedPieces, Has.All.InstanceOf<RotatedPiece>());
            Assert.That(rotatedPieces[0].Piece, Is.SameAs(Piece.TestPieceA));
            Assert.That(rotatedPieces[1].Piece, Is.SameAs(Piece.TestPieceB));
            Assert.That(rotatedPieces[2].Piece, Is.SameAs(Piece.TestPieceC));
            Assert.That(rotatedPieces[3].Piece, Is.SameAs(Piece.TestPieceD));
            Assert.That(rotatedPieces, Has.All.Matches<RotatedPiece>(rp => rp.Orientation == Orientation.North));
        }
        public void Permutations_GivenThatTheFeederHasTwoPieces_ReturnsNorthEastSouthWestOfTheSecondPieceAsTheFirstFourPermutations()
        {
            // Arrange
            var pieceFeeder = new PieceFeeder(Piece.TestPieceA, Piece.TestPieceB);

            // Act
            var permutations = pieceFeeder.Permutations.Take(4).ToArray();

            // Assert
            Assert.That(permutations, Has.Length.EqualTo(4));
            Assert.That(permutations, Has.All.Matches<IEnumerable<RotatedPiece>>(rps => rps.Count() == 2));
            Assert.That(permutations[0].First().Orientation, Is.EqualTo(Orientation.North));
            Assert.That(permutations[1].First().Orientation, Is.EqualTo(Orientation.North));
            Assert.That(permutations[2].First().Orientation, Is.EqualTo(Orientation.North));
            Assert.That(permutations[3].First().Orientation, Is.EqualTo(Orientation.North));
            Assert.That(permutations[0].Last().Orientation, Is.EqualTo(Orientation.North));
            Assert.That(permutations[1].Last().Orientation, Is.EqualTo(Orientation.East));
            Assert.That(permutations[2].Last().Orientation, Is.EqualTo(Orientation.South));
            Assert.That(permutations[3].Last().Orientation, Is.EqualTo(Orientation.West));
        }
        public void Permutations_GivenThatTheFeederHasTwoPieces_ReturnsEOfFirstPieceAndNESWOfSecondPieceInTheSecondBatchOfFourPermutations()
        {
            // Arrange
            var pieceFeeder = new PieceFeeder(Piece.TestPieceA, Piece.TestPieceB);

            // Act
            var permutations = pieceFeeder.Permutations.Take(8).ToArray();

            // Assert
            Assert.That(permutations, Has.Length.EqualTo(8));
            Assert.That(permutations, Has.All.Matches<IEnumerable<RotatedPiece>>(rps => rps.Count() == 2));
            Assert.That(permutations[4].First().Orientation, Is.EqualTo(Orientation.East));
            Assert.That(permutations[5].First().Orientation, Is.EqualTo(Orientation.East));
            Assert.That(permutations[6].First().Orientation, Is.EqualTo(Orientation.East));
            Assert.That(permutations[7].First().Orientation, Is.EqualTo(Orientation.East));
            Assert.That(permutations[4].Last().Orientation, Is.EqualTo(Orientation.North));
            Assert.That(permutations[5].Last().Orientation, Is.EqualTo(Orientation.East));
            Assert.That(permutations[6].Last().Orientation, Is.EqualTo(Orientation.South));
            Assert.That(permutations[7].Last().Orientation, Is.EqualTo(Orientation.West));
        }
Esempio n. 8
0
        public void SolvePuzzle_GivenInsaneData_ThrowsException()
        {
            // Arrange
            var board = new Board(TestBoardSize);
            var solver = new Solver();
            var pieceFeeder = new PieceFeeder(Piece.TestPieceA, Piece.TestPieceB, Piece.TestPieceC);

            // Act, Assert
            Assert.Throws<InvalidOperationException>(() => solver.SolvePuzzle(board, pieceFeeder));
        }