Beispiel #1
0
    def test_move(self):
        g = Grid()
        g.move(Color.RED, 0)
        state = g.state.cols_first

        self.assertEqual(state[0][0], Color.RED)
        self.assertIsNone(state[0][1])
Beispiel #2
0
    def test_middle_finishing(self):
        judge = Judge()
        g = Grid(ncols=4, nrows=2)
        g.move(Color.RED, 0)
        g.move(Color.RED, 1)
        g.move(Color.RED, 3)
        g.move(Color.RED, 2)

        self.assertTrue(judge.is_over(g.state))
        self.assertTrue(judge.is_over_after_move_in_col(g.state, 2))
Beispiel #3
0
    def test_state(self):
        g = Grid(ncols=5, nrows=4)
        g.move(Color.RED, 0)
        g.move(Color.BLACK, 1)
        g.move(Color.RED, 1)
        g.move(Color.BLACK, 2)
        g.move(Color.RED, 4)
        g.move(Color.BLACK, 1)
        state = g.state.rows_first

        # 3  - - - - -
        # 2  - B - - -
        # 1  - R - - -
        # 0  R B B - R
        #
        #    0 1 2 3 4

        self.assertSequenceEqual([None, None, None, None, None], state[3])
        self.assertSequenceEqual([None, Color.BLACK, None, None, None],
                                 state[2])
        self.assertSequenceEqual([None, Color.RED, None, None, None], state[1])
        self.assertSequenceEqual(
            [Color.RED, Color.BLACK, Color.BLACK, None, Color.RED], state[0])
Beispiel #4
0
 def test_overflow(self):
     g = Grid()
     for _ in range(6):
         g.move(Color.RED, 2)
     with self.assertRaises(AssertionError):
         g.move(Color.RED, 2)
Beispiel #5
0
 def test_move_outside(self):
     g = Grid()
     with self.assertRaises(AssertionError):
         g.move(Color.RED, 7)
Beispiel #6
0
    def test_from_coords(self):
        judge = Judge()
        g = Grid(ncols=5, nrows=4)

        g.move(Color.RED, 2)
        g.move(Color.BLACK, 3)
        g.move(Color.RED, 1)
        g.move(Color.BLACK, 2)
        g.move(Color.RED, 0)
        g.move(Color.BLACK, 1)
        g.move(Color.RED, 0)
        g.move(Color.BLACK, 1)
        g.move(Color.RED, 0)
        g.move(Color.BLACK, 0)

        # 3  B - - - -
        # 2  R B - - -
        # 1  R B B - -
        # 0  R R R B -
        #    0 1 2 3 4

        self.assertFalse(judge.is_over_from(g.state, 1, 2))
        self.assertFalse(judge.is_over_from(g.state, 2, 1))
        self.assertTrue(judge.is_over_from(g.state, 0, 3))
        self.assertTrue(judge.is_over_from(g.state, 3, 0))
Beispiel #7
0
    def test_horizontal_win(self):
        judge = Judge()
        g = Grid(ncols=4, nrows=4)

        g.move(Color.RED, 0)
        g.move(Color.BLACK, 0)
        g.move(Color.RED, 1)
        g.move(Color.BLACK, 1)
        g.move(Color.RED, 2)
        g.move(Color.BLACK, 2)

        self.assertFalse(judge.is_over(g.state))

        g.move(Color.RED, 3)
        self.assertTrue(judge.is_over(g.state))
        self.assertTrue(judge.is_over_horizontal(g.state))
        self.assertFalse(judge.is_over_rightdown(g.state))
Beispiel #8
0
    def test_rightdown_win(self):
        judge = Judge()
        g = Grid(ncols=5, nrows=4)

        g.move(Color.RED, 2)
        g.move(Color.BLACK, 3)
        g.move(Color.RED, 1)
        g.move(Color.BLACK, 2)
        g.move(Color.RED, 0)
        g.move(Color.BLACK, 1)
        g.move(Color.RED, 0)
        g.move(Color.BLACK, 1)
        g.move(Color.RED, 0)

        # 3  B - - - -
        # 2  R B - - -
        # 1  R B B - -
        # 0  R R R B -
        #    0 1 2 3 4

        self.assertFalse(judge.is_over(g.state))

        g.move(Color.BLACK, 0)
        self.assertTrue(judge.is_over(g.state))
        self.assertTrue(judge.is_over_rightdown(g.state))
        self.assertFalse(judge.is_over_vertical(g.state))
Beispiel #9
0
    def test_rightup_win(self):
        judge = Judge()
        g = Grid(ncols=5, nrows=4)

        g.move(Color.RED, 1)
        g.move(Color.BLACK, 0)
        g.move(Color.RED, 2)
        g.move(Color.BLACK, 1)
        g.move(Color.RED, 3)
        g.move(Color.BLACK, 2)
        g.move(Color.RED, 3)
        g.move(Color.BLACK, 2)
        g.move(Color.RED, 3)

        # 3  - - - B -
        # 2  - - B R -
        # 1  - B B R -
        # 0  B R R R -
        #    0 1 2 3 4

        self.assertFalse(judge.is_over(g.state))

        g.move(Color.BLACK, 3)
        self.assertTrue(judge.is_over(g.state))
        self.assertTrue(judge.is_over_rightup(g.state))
        self.assertFalse(judge.is_over_rightdown(g.state))
Beispiel #10
0
    def test_vertical_win(self):
        judge = Judge()
        g = Grid(ncols=2, nrows=4)

        g.move(Color.RED, 0)
        g.move(Color.BLACK, 1)
        g.move(Color.RED, 0)
        g.move(Color.BLACK, 1)
        g.move(Color.RED, 0)
        g.move(Color.BLACK, 1)

        self.assertFalse(judge.is_over(g.state))

        g.move(Color.RED, 0)
        self.assertTrue(judge.is_over(g.state))
        self.assertTrue(judge.is_over_vertical(g.state))
        self.assertFalse(judge.is_over_horizontal(g.state))