Esempio n. 1
0
def test_hold_current_tetromino():
    b = Board(10, 22)
    m = Movement(b)
    assert b.held_tetromino is None
    last_tetromino_id = b.current_tetromino.id
    # should hold current tetromino
    b.hold_current_tetromino()
    assert b.held_tetromino.id == last_tetromino_id
    # not dropped yet, so held tetromino should be unchanged
    b.hold_current_tetromino()
    assert b.held_tetromino.id == last_tetromino_id
    # drop tetromino then hold, held tetromino should replace current
    m.hard_drop()
    b.hold_current_tetromino()
    assert b.held_tetromino.id != last_tetromino_id
    assert b.current_tetromino.id == last_tetromino_id
    # test held tetromino position gets reset if moved before holding
    b.current_tetromino.offset(-1, 0)
    assert (b.current_tetromino.origin.x, b.current_tetromino.origin.y) != \
        (SPAWN[b.current_tetromino.id].x, SPAWN[b.current_tetromino.id].y)
    b.hold_current_tetromino()
    m.hard_drop()
    b.hold_current_tetromino()
    assert (b.current_tetromino.origin.x, b.current_tetromino.origin.y) == \
        (SPAWN[b.current_tetromino.id].x, SPAWN[b.current_tetromino.id].y)