Exemple #1
0
class TestBoardWriter(TestCase):
    def setUp(self):
        self.board = Board(4, 3, [[1, 2], [1, 1], []], [[1, 1], [], [2], [2]])
        self.board.set_position(0, 0, Board.Cross)
        self.board.set_position(2, 1, Board.Empty)

    @patch('builtins.open', new_callable=mock_open, create=True)
    def test_write_board_success(self, mock_file):
        BoardWriter(self.board).export('open/path/file.json')
        mock_file.assert_called_once_with('open/path/file.json', 'w')
        mock_file().write.assert_called_with(
            '{"width": 4, "height": 3, "constraints": {"rows": [[1, 2], [1, 1], []], '
            '"columns": [[1, 1], [], [2], [2]]}, '
            '"values": [{"x": 0, "y": 0, "value": true}, {"x": 1, "y": 2, "value": false}]}'
        )
Exemple #2
0
 def test_check_correct(self):
     simple_board = Board(1, 1, [[]], [[]])
     self.assertTrue(simple_board.check_correct())
     simple_board.set_position(0, 0, Board.Empty)
     self.assertTrue(simple_board.check_correct())
     simple_board.set_position(0, 0, Board.Cross)
     self.assertFalse(simple_board.check_correct())
     self.assertFalse(self.board.check_correct())
     board = Board(4, 2, [[1, 2], [3]], [[1], [1], [2], [2]])
     self.assertFalse(board.check_correct())
     board.set_position(0, 0, Board.Cross)
     board.set_position(2, 0, Board.Cross)
     board.set_position(3, 0, Board.Cross)
     board.set_position(1, 1, Board.Cross)
     board.set_position(2, 1, Board.Cross)
     board.set_position(3, 1, Board.Cross)
     self.assertTrue(board.check_correct())
class TestPrintBoard(TestCase):
    def setUp(self):
        self.board1 = Board(2, 2, [[], [1]], [[1], []])
        self.board2 = Board(5, 6, [[1, 2, 3], [4, 5], [], [7], [4, 2], []],
                            [[1, 1, 1, 1, 1, 6], [], [1, 2, 3], [], [1]])
        self.board3 = Board(1, 1, [[]], [[]])

    def test_print1(self):
        board1_str = PrintBoard(self.board1)._print()
        self.assertEqual(board1_str, '    1   \n   ====\n  ǁ ? ?\n1 ǁ ? ?\n')
        self.board1.set_position(0, 1, Board.Cross)
        board1_str = PrintBoard(self.board1)._print()
        self.assertEqual(board1_str, '    1   \n   ====\n  ǁ ? ?\n1 ǁ X ?\n')
        self.board1.set_position(0, 0, Board.Empty)
        self.board1.set_position(1, 0, Board.Empty)
        self.board1.set_position(1, 1, Board.Empty)
        board1_str = PrintBoard(self.board1)._print()
        self.assertEqual(board1_str, '    1   \n   ====\n  ǁ    \n1 ǁ X  \n')

    def test_print2(self):
        board2_str = PrintBoard(self.board2)._print()
        self.assertEqual(
            board2_str,
            '        1         \n        1         \n        1         \n        1   1     \n'
            '        1   2     \n        6   3   1 \n       ==========\n1 2 3 ǁ ? ? ? ? ?\n'
            '  4 5 ǁ ? ? ? ? ?\n      ǁ ? ? ? ? ?\n    7 ǁ ? ? ? ? ?\n  4 2 ǁ ? ? ? ? ?\n'
            '      ǁ ? ? ? ? ?\n')

    def test_print3(self):
        board3_str = PrintBoard(self.board3)._print()
        self.assertEqual(board3_str, ' ==\nǁ ?\n')
Exemple #4
0
class TestBoard(TestCase):
    def test_static_values(self):
        self.assertEqual(Board.Unknown, 0)
        self.assertEqual(Board.Cross, 1)
        self.assertEqual(Board.Empty, 2)

    def setUp(self):
        self.row_constaints = [[1, 2, 3], [], [3, 2, 1], []]
        self.col_constraints = [[4, 2], [], [2, 4]]
        self.board = Board(3, 4, self.row_constaints, self.col_constraints)

    def test_width_height(self):
        self.assertEqual(self.board.get_width(), 3)
        self.assertEqual(self.board.get_height(), 4)

    def test_constraints(self):
        self.assertListEqual(self.row_constaints,
                             self.board.get_row_constraints())
        self.assertListEqual(self.col_constraints,
                             self.board.get_col_constraints())

    def test_set_value(self):
        self.board.set_position(0, 0, Board.Empty)
        self.assertEqual(self.board._board[0][0], Board.Empty)
        with self.assertRaises(InvalidValueError):
            self.board.set_position(1, 1, 3)
        self.board.set_position(2, 3, Board.Cross)
        self.assertEqual(self.board._board[3][2], Board.Cross)
        self.board.set_position(2, 3, Board.Unknown)
        self.assertEqual(self.board._board[3][2], Board.Unknown)

    def test_get_value(self):
        self.board._board[0][0] = Board.Empty
        self.assertEqual(self.board.get_value(0, 0), Board.Empty)
        self.board._board[3][2] = Board.Cross
        self.assertEqual(self.board.get_value(2, 3), Board.Cross)
        self.board._board[3][2] = Board.Unknown
        self.assertEqual(self.board.get_value(2, 3), Board.Unknown)

    def test_default_unknown(self):
        self.assertListEqual(self.board._board,
                             [[Board.Unknown] * 3 for _ in range(4)])

    def test_get_row_col(self):
        self.board.set_position(1, 1, Board.Cross)
        self.board.set_position(1, 0, Board.Cross)
        self.assertListEqual(self.board.get_row(0),
                             [Board.Unknown, Board.Cross, Board.Unknown])
        self.assertListEqual(self.board.get_row(1),
                             [Board.Unknown, Board.Cross, Board.Unknown])
        self.assertListEqual(self.board.get_row(2),
                             [Board.Unknown, Board.Unknown, Board.Unknown])
        self.assertListEqual(self.board.get_row(3),
                             [Board.Unknown, Board.Unknown, Board.Unknown])
        self.assertListEqual(
            self.board.get_column(0),
            [Board.Unknown, Board.Unknown, Board.Unknown, Board.Unknown])
        self.assertListEqual(
            self.board.get_column(1),
            [Board.Cross, Board.Cross, Board.Unknown, Board.Unknown])
        self.assertListEqual(
            self.board.get_column(2),
            [Board.Unknown, Board.Unknown, Board.Unknown, Board.Unknown])

    def test_get_score(self):
        self.assertListEqual(Board.get_score([]), [])
        self.assertListEqual(Board.get_score([Board.Unknown]), [])
        self.assertListEqual(Board.get_score([Board.Empty]), [])
        self.assertListEqual(Board.get_score([Board.Cross]), [1])
        self.assertListEqual(
            Board.get_score([
                Board.Cross, Board.Empty, Board.Cross, Board.Cross,
                Board.Unknown
            ]), [1, 2])
        self.assertListEqual(
            Board.get_score(
                [Board.Cross, Board.Cross, Board.Cross, Board.Cross]), [4])

    def test_check_correct(self):
        simple_board = Board(1, 1, [[]], [[]])
        self.assertTrue(simple_board.check_correct())
        simple_board.set_position(0, 0, Board.Empty)
        self.assertTrue(simple_board.check_correct())
        simple_board.set_position(0, 0, Board.Cross)
        self.assertFalse(simple_board.check_correct())
        self.assertFalse(self.board.check_correct())
        board = Board(4, 2, [[1, 2], [3]], [[1], [1], [2], [2]])
        self.assertFalse(board.check_correct())
        board.set_position(0, 0, Board.Cross)
        board.set_position(2, 0, Board.Cross)
        board.set_position(3, 0, Board.Cross)
        board.set_position(1, 1, Board.Cross)
        board.set_position(2, 1, Board.Cross)
        board.set_position(3, 1, Board.Cross)
        self.assertTrue(board.check_correct())