Example #1
0
    def test_move_outcome_equals_move_executed(self):
        game = TetrisGame()
        # starts with empty board
        self.assertEqual(game.grid, Grid())
        after_drop_grid = game.get_move_outcome(Tetromino("I"), 2)

        # state of board should be == to after_drop_grid_check
        after_drop_grid_check_cols = [0] * 10
        after_drop_grid_check_cols[6] = 0xf
        after_drop_grid_check = Grid(after_drop_grid_check_cols)
        self.assertEqual(after_drop_grid, after_drop_grid_check)

        # execute move for real
        game.execute_move(Tetromino("I"), 2)
        self.assertEqual(game.grid, after_drop_grid_check)
 def test_t_as_shape(self):
     block = Tetromino("T")
     self.assertEqual(
         block.as_shape(),
         [[0, 1, 0, 0], [1, 1, 1, 0], [0, 0, 0, 0], [0, 0, 0, 0]])
     block.rotate()
     self.assertEqual(
         block.as_shape(),
         [[0, 1, 0, 0], [1, 1, 0, 0], [0, 1, 0, 0], [0, 0, 0, 0]])
     block.rotate()
     self.assertEqual(
         block.as_shape(),
         [[0, 0, 0, 0], [1, 1, 1, 0], [0, 1, 0, 0], [0, 0, 0, 0]])
Example #3
0
    def test_possible_outcomes(self):
        game = TetrisGame()
        move_options = game.get_move_options(Tetromino("I"))

        for option in move_options:
            game = TetrisGame()
            game.execute_move(option.tetromino, option.x)
            self.assertEqual(game.grid, option.result)
Example #4
0
 def test_turn_increment(self):
     game = TetrisGame()
     self.assertEqual(game.turns_elapsed, 0)
     self.assertEqual(game.grid, Grid())
     grid_start = game.grid
     game.execute_move(Tetromino("I"), 2)
     # TODO assert grid correctly reflects move above
     self.assertNotEqual(grid_start, game.grid)
     self.assertEqual(game.turns_elapsed, 1)
 def test_s_spin(self):
     block = Tetromino("S")
     self.assertEqual(block.layout, [6, 7, 9, 10])
     block.rotate()
     self.assertEqual(block.layout, [1, 5, 6, 10])
     block.rotate()
     self.assertEqual(block.layout, [6, 7, 9, 10])
     block.rotate()
     self.assertEqual(block.layout, [1, 5, 6, 10])
     block.rotate()
     self.assertEqual(block.layout, [6, 7, 9, 10])
     block.rotate(-1)
     self.assertEqual(block.layout, [1, 5, 6, 10])
     block.rotate(-1)
     self.assertEqual(block.layout, [6, 7, 9, 10])
     block.rotate(-1)
     self.assertEqual(block.layout, [1, 5, 6, 10])
     block.rotate(-1)
     self.assertEqual(block.layout, [6, 7, 9, 10])
 def test_i_spin(self):
     block = Tetromino("I")
     self.assertEqual(block.layout, [1, 5, 9, 13])
     block.rotate()
     self.assertEqual(block.layout, [4, 5, 6, 7])
     block.rotate()
     self.assertEqual(block.layout, [1, 5, 9, 13])
     block.rotate()
     self.assertEqual(block.layout, [4, 5, 6, 7])
     block.rotate()
     self.assertEqual(block.layout, [1, 5, 9, 13])
     block.rotate(-1)
     self.assertEqual(block.layout, [4, 5, 6, 7])
     block.rotate(-1)
     self.assertEqual(block.layout, [1, 5, 9, 13])
     block.rotate(-1)
     self.assertEqual(block.layout, [4, 5, 6, 7])
     block.rotate(-1)
     self.assertEqual(block.layout, [1, 5, 9, 13])
 def test_o_spin(self):
     block = Tetromino("O")
     self.assertEqual(block.layout, [1, 2, 5, 6])
     block.rotate()
     self.assertEqual(block.layout, [1, 2, 5, 6])
     block.rotate()
     self.assertEqual(block.layout, [1, 2, 5, 6])
     block.rotate()
     self.assertEqual(block.layout, [1, 2, 5, 6])
     block.rotate()
     self.assertEqual(block.layout, [1, 2, 5, 6])
     block.rotate(-1)
     self.assertEqual(block.layout, [1, 2, 5, 6])
     block.rotate(-1)
     self.assertEqual(block.layout, [1, 2, 5, 6])
     block.rotate(-1)
     self.assertEqual(block.layout, [1, 2, 5, 6])
     block.rotate(-1)
     self.assertEqual(block.layout, [1, 2, 5, 6])
 def test_l_spin(self):
     block = Tetromino("L")
     self.assertEqual(block.layout, [1, 2, 6, 10])
     block.rotate()
     self.assertEqual(block.layout, [5, 6, 7, 9])
     block.rotate()
     self.assertEqual(block.layout, [2, 6, 10, 11])
     block.rotate()
     self.assertEqual(block.layout, [3, 5, 6, 7])
     block.rotate()
     self.assertEqual(block.layout, [1, 2, 6, 10])
     block.rotate(-1)
     self.assertEqual(block.layout, [3, 5, 6, 7])
     block.rotate(-1)
     self.assertEqual(block.layout, [2, 6, 10, 11])
     block.rotate(-1)
     self.assertEqual(block.layout, [5, 6, 7, 9])
     block.rotate(-1)
     self.assertEqual(block.layout, [1, 2, 6, 10])
 def test_j_spin(self):
     block = Tetromino("J")
     self.assertEqual(block.layout, [1, 2, 5, 9])
     block.rotate()
     self.assertEqual(block.layout, [0, 4, 5, 6])
     block.rotate()
     self.assertEqual(block.layout, [1, 5, 9, 8])
     block.rotate()
     self.assertEqual(block.layout, [4, 5, 6, 10])
     block.rotate()
     self.assertEqual(block.layout, [1, 2, 5, 9])
     block.rotate(-1)
     self.assertEqual(block.layout, [4, 5, 6, 10])
     block.rotate(-1)
     self.assertEqual(block.layout, [1, 5, 9, 8])
     block.rotate(-1)
     self.assertEqual(block.layout, [0, 4, 5, 6])
     block.rotate(-1)
     self.assertEqual(block.layout, [1, 2, 5, 9])
 def test_z_spin(self):
     block = Tetromino("Z")
     self.assertEqual(block.layout, [4, 5, 9, 10])
     block.rotate()
     self.assertEqual(block.layout, [2, 5, 6, 9])
     block.rotate()
     self.assertEqual(block.layout, [4, 5, 9, 10])
     block.rotate()
     self.assertEqual(block.layout, [2, 5, 6, 9])
     block.rotate()
     self.assertEqual(block.layout, [4, 5, 9, 10])
     block.rotate(-1)
     self.assertEqual(block.layout, [2, 5, 6, 9])
     block.rotate(-1)
     self.assertEqual(block.layout, [4, 5, 9, 10])
     block.rotate(-1)
     self.assertEqual(block.layout, [2, 5, 6, 9])
     block.rotate(-1)
 def test_t_spin(self):
     block = Tetromino("T")
     self.assertEqual(block.layout, [1, 4, 5, 6])
     block.rotate()
     self.assertEqual(block.layout, [1, 4, 5, 9])
     block.rotate()
     self.assertEqual(block.layout, [4, 5, 6, 9])
     block.rotate()
     self.assertEqual(block.layout, [1, 5, 6, 9])
     block.rotate()
     self.assertEqual(block.layout, [1, 4, 5, 6])
     block.rotate(-1)
     self.assertEqual(block.layout, [1, 5, 6, 9])
     block.rotate(-1)
     self.assertEqual(block.layout, [4, 5, 6, 9])
     block.rotate(-1)
     self.assertEqual(block.layout, [1, 4, 5, 9])
     block.rotate(-1)
     self.assertEqual(block.layout, [1, 4, 5, 6])