Exemplo n.º 1
0
class TestAdjacentBalls(BoardTestCase):
    def setUp(self):
        super().setUp()
        self.board = SameBoard(num_columns=2,
                               num_rows=2,
                               num_colours=self.num_colours,
                               scorer=self.scorer)

    def test_adjacent_balls(self):
        self.board.balls = [[Ball(colour='red'),
                             Ball(colour='red')],
                            [Ball(colour='blue'),
                             Ball(colour='blue')]]
        adjacent_balls = self.board.adjacent(position=(0, 0))
        expected_balls = set([(0, 0), (0, 1)])
        self.assertEqual(adjacent_balls, expected_balls)

    def test_adjacent_balls_all(self):
        self.board.balls = [[Ball(colour='red'),
                             Ball(colour='red')],
                            [Ball(colour='red'),
                             Ball(colour='red')]]
        adjacent_balls = self.board.adjacent(position=(0, 0))
        expected_balls = set([(0, 0), (0, 1), (1, 0), (1, 1)])
        self.assertEqual(adjacent_balls, expected_balls)

    def test_adjacent_balls_random(self):
        self.board = SameBoard(num_columns=3,
                               num_rows=2,
                               num_colours=self.num_colours,
                               scorer=self.scorer)
        self.board.balls = [[
            Ball(colour='red'),
            Ball(colour='red'),
            Ball(colour='red')
        ], [Ball(colour='red'),
            Ball(colour='blue'),
            Ball(colour='blue')]]
        adjacent_balls = self.board.adjacent(position=(0, 0))
        expected_balls = set([(0, 0), (0, 1), (0, 2), (1, 0)])
        self.assertEqual(adjacent_balls, expected_balls)

    def test_just_one_adjacent_ball(self):
        self.board = SameBoard(num_columns=3,
                               num_rows=2,
                               num_colours=self.num_colours,
                               scorer=self.scorer)
        self.board.balls = [[
            Ball(colour='red'),
            Ball(colour='red'),
            Ball(colour='red')
        ], [Ball(colour='red'),
            Ball(colour='red'),
            Ball(colour='blue')]]
        adjacent_balls = self.board.adjacent(position=(2, 1))
        expected_balls = set([(1, 2)])
        self.assertEqual(adjacent_balls, expected_balls)
Exemplo n.º 2
0
 def test_a_boxes(self):
     self.board = SameBoard(num_columns=2,
                            num_rows=2,
                            num_colours=self.num_colours,
                            scorer=self.scorer)
     self.board.balls = [[Ball(colour='red'),
                          Ball(colour='red')],
                         [Ball(colour='blue'),
                          Ball(colour='blue')]]
     boxes = self.board.generate_boxes()
     expected_boxes = [[None, Box(colour='red'), None], [None, None, None],
                       [None, Box(colour='blue'), None]]
     self.assertListEqual(boxes, expected_boxes)
Exemplo n.º 3
0
class TestGenerateBoxes(BoardTestCase):
    def test_size_box_arrays(self):
        boxes = self.board.generate_boxes()
        self.assertEqual(2 * self.num_rows - 1, len(boxes))
        self.assertEqual(2 * self.num_columns - 1, len(boxes[0]))

    def test_all_balls_the_same_colour(self):
        self.board.balls = [[
            Ball(colour='red') for i in range(self.num_columns)
        ] for j in range(self.num_rows)]
        boxes = self.board.generate_boxes()
        n_rows = len(boxes)
        n_cols = len(boxes[0])
        for i in range(n_rows):
            for j in range(n_cols):
                if (i + j) % 2 == 1:
                    if boxes[i][j].colour != 'red':
                        self.fail()

    def test_no_boxes(self):
        self.board = SameBoard(num_columns=2,
                               num_rows=2,
                               num_colours=self.num_colours,
                               scorer=self.scorer)
        self.board.balls = [[Ball(colour='red'),
                             Ball(colour='blue')],
                            [Ball(colour='blue'),
                             Ball(colour='red')]]
        boxes = self.board.generate_boxes()
        n_rows = len(boxes)
        n_cols = len(boxes[0])
        for i in range(n_rows):
            for j in range(n_cols):
                if boxes[i][j] is not None:
                    self.fail()

    def test_a_boxes(self):
        self.board = SameBoard(num_columns=2,
                               num_rows=2,
                               num_colours=self.num_colours,
                               scorer=self.scorer)
        self.board.balls = [[Ball(colour='red'),
                             Ball(colour='red')],
                            [Ball(colour='blue'),
                             Ball(colour='blue')]]
        boxes = self.board.generate_boxes()
        expected_boxes = [[None, Box(colour='red'), None], [None, None, None],
                          [None, Box(colour='blue'), None]]
        self.assertListEqual(boxes, expected_boxes)
Exemplo n.º 4
0
 def test_just_one_adjacent_ball(self):
     self.board = SameBoard(num_columns=3,
                            num_rows=2,
                            num_colours=self.num_colours,
                            scorer=self.scorer)
     self.board.balls = [[
         Ball(colour='red'),
         Ball(colour='red'),
         Ball(colour='red')
     ], [Ball(colour='red'),
         Ball(colour='red'),
         Ball(colour='blue')]]
     adjacent_balls = self.board.adjacent(position=(2, 1))
     expected_balls = set([(1, 2)])
     self.assertEqual(adjacent_balls, expected_balls)
Exemplo n.º 5
0
 def test_no_boxes(self):
     self.board = SameBoard(num_columns=2,
                            num_rows=2,
                            num_colours=self.num_colours,
                            scorer=self.scorer)
     self.board.balls = [[Ball(colour='red'),
                          Ball(colour='blue')],
                         [Ball(colour='blue'),
                          Ball(colour='red')]]
     boxes = self.board.generate_boxes()
     n_rows = len(boxes)
     n_cols = len(boxes[0])
     for i in range(n_rows):
         for j in range(n_cols):
             if boxes[i][j] is not None:
                 self.fail()
Exemplo n.º 6
0
 def test_balls(self):
     self.board = SameBoard(num_columns=3,
                            num_rows=2,
                            num_colours=self.num_colours,
                            scorer=self.scorer)
     self.board.convert_rows_to_columns = Mock()
     self.board.convert_rows_to_columns.return_value = [[
         Ball(colour='red'),
         Ball(colour='red'),
         Ball(colour='green')
     ], [None, Ball(colour='green'), None]]
     csr_balls = self.board.make_balls_fall()
     self.assertEqual(
         csr_balls,
         [[Ball(colour='red'),
           Ball(colour='red'),
           Ball(colour='green')], [None, None,
                                   Ball(colour='green')]])
Exemplo n.º 7
0
 def test_balls(self):
     self.board = SameBoard(num_columns=3,
                            num_rows=2,
                            num_colours=self.num_colours,
                            scorer=self.scorer)
     self.board.balls = [[
         Ball(colour='red'),
         Ball(colour='red'),
         Ball(colour='green')
     ], [Ball(colour='blue'),
         Ball(colour='blue'),
         Ball(colour='green')]]
     csr_balls = self.board.convert_rows_to_columns()
     self.assertEqual(
         csr_balls,
         [[Ball(colour='red'), Ball(colour='blue')],
          [Ball(colour='red'), Ball(colour='blue')],
          [Ball(colour='green'), Ball(colour='green')]])
Exemplo n.º 8
0
 def setUp(self):
     self.num_colours = 5
     self.num_rows = 5
     self.num_columns = 3
     self.scorer = create_autospec(spec=Scorer, spec_set=True)
     self.board = SameBoard(num_columns=self.num_columns,
                            num_rows=self.num_rows,
                            num_colours=self.num_colours,
                            scorer=self.scorer)
Exemplo n.º 9
0
 def test_balls(self):
     self.board = SameBoard(num_columns=3,
                            num_rows=2,
                            num_colours=self.num_colours,
                            scorer=self.scorer)
     self.board.balls = [[None for i in range(3)] for j in range(2)]
     self.board.convert_cols_to_rows(csr_balls=[[
         Ball(colour='red'), Ball(colour='blue')
     ], [Ball(colour='red'), Ball(
         colour='blue')], [Ball(
             colour='green'), Ball(colour='green')]])
     expected_balls = [[
         Ball(colour='red'),
         Ball(colour='red'),
         Ball(colour='green')
     ], [Ball(colour='blue'),
         Ball(colour='blue'),
         Ball(colour='green')]]
     self.assertEqual(self.board.balls, expected_balls)
Exemplo n.º 10
0
def main(num_columns: int = 16, num_rows: int = 14, size: int = 32):
    aScorer = Scorer()  # pylint: disable=invalid-name
    aBoard = SameBoard(num_rows=num_rows,
                       num_columns=num_columns,
                       num_colours=4,
                       scorer=aScorer)  # pylint: disable=invalid-name
    aGuiClient = PyGameClient(size=size,
                              num_rows=num_rows,
                              num_columns=num_columns,
                              score_board_height=100,
                              colours=ColourScheme.MONFAVORITE)  # pylint: disable=invalid-name
    sameGame = SameGame(board=aBoard, gui_client=aGuiClient)  # pylint: disable=invalid-name
    sameGame.play_game()
Exemplo n.º 11
0
 def test_balls(self):
     self.board = SameBoard(num_columns=3,
                            num_rows=3,
                            num_colours=self.num_colours,
                            scorer=self.scorer)
     csr_balls = [
         [Ball(colour='red'),
          Ball(colour='red'),
          Ball(colour='green')], [None, None, None],
         [Ball(colour='red'),
          Ball(colour='red'),
          Ball(colour='green')]
     ]
     no_empty_cols_balls = self.board.remove_empty_rows(csr_balls=csr_balls)
     expected_no_empty_cols_balls = [[
         Ball(colour='red'),
         Ball(colour='red'),
         Ball(colour='green')
     ], [Ball(colour='red'),
         Ball(colour='red'),
         Ball(colour='green')], [None, None, None]]
     self.assertEqual(no_empty_cols_balls, expected_no_empty_cols_balls)
Exemplo n.º 12
0
 def setUp(self):
     super().setUp()
     self.board = SameBoard(num_columns=2,
                            num_rows=2,
                            num_colours=self.num_colours,
                            scorer=self.scorer)