def test_slash_red_win(log):
    game = GameState()
    player_moves = [
        ColumnWasClicked(c) for c in [0, 1, 1, 2, 2, 3, 2, 3, 3, 5, 3]
    ]
    result = simulate_main_event_loop(game, player_moves, log)
    verify(print_scenario(player_moves, result, log))
def test_backslash_yellow_win(log):
    game = GameState()
    player_moves = [
        ColumnWasClicked(c)
        for c in [0, 6, 5, 5, 4, 4, 3, 4, 5, 3, 0, 3, 0, 3]
    ]
    result = simulate_main_event_loop(game, player_moves, log)
    verify(print_scenario(player_moves, result, log))
def test_letting_yellow_win_horisontally(log):
    game = GameState()
    player_moves = [ColumnWasClicked(c) for c in [0, 1, 0, 2, 0, 3, 1, 4]]
    result = simulate_main_event_loop(game, player_moves, log)
    verify(print_scenario(player_moves, result, log))
def test_placing_too_many_bricks_in_first_column(log):
    game = GameState()
    player_moves = [ColumnWasClicked(0)] * 8
    result = simulate_main_event_loop(game, player_moves, log)
    verify(print_scenario(player_moves, result, log))
def test_letting_red_win(log):
    game = GameState()
    player_moves = [ColumnWasClicked(0),
                    ColumnWasClicked(1)] * 3 + [ColumnWasClicked(0)]
    result = simulate_main_event_loop(game, player_moves, log)
    verify(print_scenario(player_moves, result, log))
def test_first_placed_brick_is_red(log):
    game = GameState()
    player_moves = [ColumnWasClicked(0)]
    result = simulate_main_event_loop(game, player_moves, log)
    verify(print_scenario(player_moves, result, log))
def test_mouse_movement_over_game_screen(log):
    game = GameState()
    mouse_events = [MouseMovedTo((x, x)) for x in range(0, 500, 10)]
    result = simulate_main_event_loop(game, mouse_events, log)
    verify(print_scenario(mouse_events, result, log))
def test_startscreen_to_game_transition(log):
    game = StartScreenState()
    mouse_events = [LeftMouseDownAt((1, 1))]
    result = simulate_main_event_loop(game, mouse_events, log)
    verify(print_scenario(mouse_events, result, log))
def test_clicking_in_game_over_state(log):
    game = GameOverState(winner=src.constants.RED,
                         board=src.states.empty_board())
    mouse_events = [LeftMouseDownAt((1, 1))]
    result = simulate_main_event_loop(game, mouse_events, log)
    verify(print_scenario(mouse_events, result, log))
def test_startscreen(log):
    game = StartScreenState()
    ticks = [src.messages.Tick(ms) for ms in range(3)]
    result = simulate_main_event_loop(game, ticks, log)
    verify(print_scenario(ticks, result, log))