public void NoCompletedLines()
        {
            var board  = BoardSamples.Board2;
            var solver = new CrossOutCompletedLine();

            var actualChanges = solver.Solve(board);

            Assert.Empty(actualChanges);
        }
        public void OneHorizontalLineFixed()
        {
            var board = BoardSamples.Board2
                        .ApplyChange(new BoardChange(1, 1, CellState.Filled));
            var solver = new CrossOutCompletedLine();

            var actualChanges = solver.Solve(board);

            var expected = new List <BoardChange>
            {
                new BoardChange(0, 1, CellState.Blocked),
                new BoardChange(2, 1, CellState.Blocked)
            };

            Assert.Equal(expected, actualChanges);
        }
        public void BoardWithEmptyLine()
        {
            var board  = BoardSamples.Board1;
            var solver = new CrossOutCompletedLine();

            var actualChanges = solver.Solve(board);

            var expected = new List <BoardChange>
            {
                new BoardChange(0, 4, CellState.Blocked),
                new BoardChange(1, 4, CellState.Blocked),
                new BoardChange(2, 4, CellState.Blocked),
                new BoardChange(3, 4, CellState.Blocked),
                new BoardChange(4, 4, CellState.Blocked)
            };

            Assert.Equal(expected, actualChanges);
        }
        public void TwoCrossingLine_NoDuplicates()
        {
            var board = BoardSamples.Board2
                        .ApplyChanges(
                new BoardChange(0, 2, CellState.Filled),
                new BoardChange(1, 1, CellState.Filled));
            var solver = new CrossOutCompletedLine();

            var actualChanges = solver.Solve(board);

            var expected = new List <BoardChange>
            {
                new BoardChange(0, 0, CellState.Blocked),
                new BoardChange(0, 1, CellState.Blocked),
                new BoardChange(2, 1, CellState.Blocked)
            };

            Assert.Equal(expected, actualChanges);
        }