import pytest

from crapssim.bet import PassLine
from crapssim.strategy import BetPassLine
from crapssim.table import Table, TableUpdate


@pytest.mark.parametrize(
    "point, last_roll, strat_info, bets_before, dice_result, bets_after",
    [
        (None, None, None, [], None, [PassLine(amount=5.0)]),
        (6, 6, None, [PassLine(amount=5.0)], (4, 2), [PassLine(amount=5.0)]),
        (6, 5, None, [PassLine(amount=5.0)], (4, 1), [PassLine(amount=5.0)]),
        (6, 8, None, [PassLine(amount=5.0)], (4, 4), [PassLine(amount=5.0)]),
        (6, 11, None, [PassLine(amount=5.0)], (5, 6), [PassLine(amount=5.0)]),
        (None, 6, None, [], (5, 1), [PassLine(amount=5.0)]),
        (5, 5, None, [PassLine(amount=5.0)], (4, 1), [PassLine(amount=5.0)]),
        (5, 9, None, [PassLine(amount=5.0)], (6, 3), [PassLine(amount=5.0)]),
        (5, 10, None, [PassLine(amount=5.0)], (6, 4), [PassLine(amount=5.0)]),
        (5, 10, None, [PassLine(amount=5.0)], (5, 5), [PassLine(amount=5.0)]),
        (5, 4, None, [PassLine(amount=5.0)], (1, 3), [PassLine(amount=5.0)]),
        (5, 10, None, [PassLine(amount=5.0)], (4, 6), [PassLine(amount=5.0)]),
        (None, 5, None, [], (2, 3), [PassLine(amount=5.0)]),
        (5, 5, None, [PassLine(amount=5.0)], (2, 3), [PassLine(amount=5.0)]),
        (5, 3, None, [PassLine(amount=5.0)], (1, 2), [PassLine(amount=5.0)]),
        (5, 9, None, [PassLine(amount=5.0)], (4, 5), [PassLine(amount=5.0)]),
        (5, 8, None, [PassLine(amount=5.0)], (6, 2), [PassLine(amount=5.0)]),
        (None, 7, None, [], (5, 2), [PassLine(amount=5.0)]),
        (5, 5, None, [PassLine(amount=5.0)], (4, 1), [PassLine(amount=5.0)]),
        (None, 5, None, [], (3, 2), [PassLine(amount=5.0)]),
        (4, 4, None, [PassLine(amount=5.0)], (1, 3), [PassLine(amount=5.0)]),
        (4, 5, None, [PassLine(amount=5.0)], (2, 3), [PassLine(amount=5.0)]),
        (4, 3, None, [PassLine(amount=5.0)], (2, 1), [PassLine(amount=5.0)]),
        (4, 9, None, [PassLine(amount=5.0)], (6, 3), [PassLine(amount=5.0)]),
        (None, 7, None, [], (5, 2), [PassLine(amount=5.0)]),
        (None, 7, None, [], (5, 2), [PassLine(amount=5.0)]),
        (None, 7, None, [], (4, 3), [PassLine(amount=5.0)]),
        (10, 10, None, [PassLine(amount=5.0)], (5, 5), [PassLine(amount=5.0)]),
        (10, 11, None, [PassLine(amount=5.0)], (6, 5), [PassLine(amount=5.0)]),
        (10, 4, None, [PassLine(amount=5.0)], (3, 1), [PassLine(amount=5.0)]),
        (None, 10, None, [], (5, 5), [PassLine(amount=5.0)]),
        (8, 8, None, [PassLine(amount=5.0)], (4, 4), [PassLine(amount=5.0)]),
        (None, 8, None, [], (4, 4), [PassLine(amount=5.0)]),
        (None, 7, None, [], (3, 4), [PassLine(amount=5.0)]),
        (None, 3, None, [], (1, 2), [PassLine(amount=5.0)]),
        (None, 7, None, [], (4, 3), [PassLine(amount=5.0)]),
        (10, 10, None, [PassLine(amount=5.0)], (4, 6), [PassLine(amount=5.0)]),
        (10, 5, None, [PassLine(amount=5.0)], (4, 1), [PassLine(amount=5.0)]),
        (10, 11, None, [PassLine(amount=5.0)], (6, 5), [PassLine(amount=5.0)]),
        (10, 8, None, [PassLine(amount=5.0)], (3, 5), [PassLine(amount=5.0)]),
        (10, 9, None, [PassLine(amount=5.0)], (5, 4), [PassLine(amount=5.0)]),
        (None, 7, None, [], (3, 4), [PassLine(amount=5.0)]),
        (None, 7, None, [], (5, 2), [PassLine(amount=5.0)]),
        (None, 11, None, [], (5, 6), [PassLine(amount=5.0)]),
        (8, 8, None, [PassLine(amount=5.0)], (4, 4), [PassLine(amount=5.0)]),
        (None, 7, None, [], (5, 2), [PassLine(amount=5.0)]),
        (6, 6, None, [PassLine(amount=5.0)], (3, 3), [PassLine(amount=5.0)]),
        (6, 11, None, [PassLine(amount=5.0)], (5, 6), [PassLine(amount=5.0)]),
        (6, 9, None, [PassLine(amount=5.0)], (3, 6), [PassLine(amount=5.0)]),
        (6, 5, None, [PassLine(amount=5.0)], (3, 2), [PassLine(amount=5.0)]),
        (6, 9, None, [PassLine(amount=5.0)], (3, 6), [PassLine(amount=5.0)]),
        (6, 5, None, [PassLine(amount=5.0)], (1, 4), [PassLine(amount=5.0)]),
        (6, 5, None, [PassLine(amount=5.0)], (2, 3), [PassLine(amount=5.0)]),
        (6, 5, None, [PassLine(amount=5.0)], (4, 1), [PassLine(amount=5.0)]),
        (6, 9, None, [PassLine(amount=5.0)], (4, 5), [PassLine(amount=5.0)]),
        (6, 4, None, [PassLine(amount=5.0)], (1, 3), [PassLine(amount=5.0)]),
        (6, 8, None, [PassLine(amount=5.0)], (3, 5), [PassLine(amount=5.0)]),
        (6, 11, None, [PassLine(amount=5.0)], (5, 6), [PassLine(amount=5.0)]),
        (6, 5, None, [PassLine(amount=5.0)], (2, 3), [PassLine(amount=5.0)]),
        (6, 2, None, [PassLine(amount=5.0)], (1, 1), [PassLine(amount=5.0)]),
        (6, 10, None, [PassLine(amount=5.0)], (4, 6), [PassLine(amount=5.0)]),
        (6, 4, None, [PassLine(amount=5.0)], (3, 1), [PassLine(amount=5.0)]),
        (6, 8, None, [PassLine(amount=5.0)], (6, 2), [PassLine(amount=5.0)]),
        (None, 6, None, [], (3, 3), [PassLine(amount=5.0)]),
        (None, 7, None, [], (5, 2), [PassLine(amount=5.0)]),
        (10, 10, None, [PassLine(amount=5.0)], (6, 4), [PassLine(amount=5.0)]),
        (None, 7, None, [], (5, 2), [PassLine(amount=5.0)]),
        (9, 9, None, [PassLine(amount=5.0)], (4, 5), [PassLine(amount=5.0)]),
        (9, 6, None, [PassLine(amount=5.0)], (5, 1), [PassLine(amount=5.0)]),
        (9, 10, None, [PassLine(amount=5.0)], (4, 6), [PassLine(amount=5.0)]),
        (9, 8, None, [PassLine(amount=5.0)], (4, 4), [PassLine(amount=5.0)]),
        (9, 6, None, [PassLine(amount=5.0)], (5, 1), [PassLine(amount=5.0)]),
        (9, 10, None, [PassLine(amount=5.0)], (4, 6), [PassLine(amount=5.0)]),
        (9, 3, None, [PassLine(amount=5.0)], (1, 2), [PassLine(amount=5.0)]),
        (9, 8, None, [PassLine(amount=5.0)], (2, 6), [PassLine(amount=5.0)]),
        (None, 7, None, [], (3, 4), [PassLine(amount=5.0)]),
        (None, 12, None, [], (6, 6), [PassLine(amount=5.0)]),
        (8, 8, None, [PassLine(amount=5.0)], (3, 5), [PassLine(amount=5.0)]),
        (None, 8, None, [], (5, 3), [PassLine(amount=5.0)]),
        (6, 6, None, [PassLine(amount=5.0)], (2, 4), [PassLine(amount=5.0)]),
        (6, 10, None, [PassLine(amount=5.0)], (4, 6), [PassLine(amount=5.0)]),
        (6, 9, None, [PassLine(amount=5.0)], (5, 4), [PassLine(amount=5.0)]),
        (None, 7, None, [], (4, 3), [PassLine(amount=5.0)]),
        (None, 11, None, [], (5, 6), [PassLine(amount=5.0)]),
        (8, 8, None, [PassLine(amount=5.0)], (6, 2), [PassLine(amount=5.0)]),
        (8, 6, None, [PassLine(amount=5.0)], (3, 3), [PassLine(amount=5.0)]),
        (8, 10, None, [PassLine(amount=5.0)], (5, 5), [PassLine(amount=5.0)]),
        (8, 6, None, [PassLine(amount=5.0)], (3, 3), [PassLine(amount=5.0)]),
        (8, 5, None, [PassLine(amount=5.0)], (1, 4), [PassLine(amount=5.0)]),
        (8, 6, None, [PassLine(amount=5.0)], (5, 1), [PassLine(amount=5.0)]),
        (None, 7, None, [], (2, 5), [PassLine(amount=5.0)]),
        (6, 6, None, [PassLine(amount=5.0)], (2, 4), [PassLine(amount=5.0)]),
        (6, 4, None, [PassLine(amount=5.0)], (1, 3), [PassLine(amount=5.0)]),
        (None, 7, None, [], (3, 4), [PassLine(amount=5.0)]),
        (None, 7, None, [], (2, 5), [PassLine(amount=5.0)]),
        (None, 11, None, [], (5, 6), [PassLine(amount=5.0)]),
        (5, 5, None, [PassLine(amount=5.0)], (4, 1), [PassLine(amount=5.0)]),
        (None, 7, None, [], (2, 5), [PassLine(amount=5.0)]),
        (None, 7, None, [], (6, 1), [PassLine(amount=5.0)]),
        (None, 7, None, [], (5, 2), [PassLine(amount=5.0)]),
        (9, 9, None, [PassLine(amount=5.0)], (5, 4), [PassLine(amount=5.0)]),
        (9, 8, None, [PassLine(amount=5.0)], (6, 2), [PassLine(amount=5.0)]),
        (None, 7, None, [], (6, 1), [PassLine(amount=5.0)]),
        (9, 9, None, [PassLine(amount=5.0)], (3, 6), [PassLine(amount=5.0)]),
        (9, 10, None, [PassLine(amount=5.0)], (4, 6), [PassLine(amount=5.0)]),
        (9, 6, None, [PassLine(amount=5.0)], (2, 4), [PassLine(amount=5.0)]),
        (None, 7, None, [], (5, 2), [PassLine(amount=5.0)]),
        (9, 9, None, [PassLine(amount=5.0)], (3, 6), [PassLine(amount=5.0)]),
        (9, 10, None, [PassLine(amount=5.0)], (6, 4), [PassLine(amount=5.0)]),
        (9, 12, None, [PassLine(amount=5.0)], (6, 6), [PassLine(amount=5.0)]),
        (None, 7, None, [], (5, 2), [PassLine(amount=5.0)]),
        (5, 5, None, [PassLine(amount=5.0)], (2, 3), [PassLine(amount=5.0)]),
        (5, 8, None, [PassLine(amount=5.0)], (4, 4), [PassLine(amount=5.0)]),
        (None, 7, None, [], (1, 6), [PassLine(amount=5.0)]),
        (5, 5, None, [PassLine(amount=5.0)], (2, 3), [PassLine(amount=5.0)]),
        (None, 7, None, [], (3, 4), [PassLine(amount=5.0)]),
        (5, 5, None, [PassLine(amount=5.0)], (3, 2), [PassLine(amount=5.0)]),
        (5, 6, None, [PassLine(amount=5.0)], (1, 5), [PassLine(amount=5.0)]),
        (5, 4, None, [PassLine(amount=5.0)], (2, 2), [PassLine(amount=5.0)]),
        (None, 7, None, [], (2, 5), [PassLine(amount=5.0)]),
        (5, 5, None, [PassLine(amount=5.0)], (3, 2), [PassLine(amount=5.0)]),
        (5, 3, None, [PassLine(amount=5.0)], (1, 2), [PassLine(amount=5.0)]),
        (5, 12, None, [PassLine(amount=5.0)], (6, 6), [PassLine(amount=5.0)]),
        (5, 8, None, [PassLine(amount=5.0)], (3, 5), [PassLine(amount=5.0)]),
        (5, 3, None, [PassLine(amount=5.0)], (2, 1), [PassLine(amount=5.0)]),
        (5, 8, None, [PassLine(amount=5.0)], (2, 6), [PassLine(amount=5.0)]),
        (5, 9, None, [PassLine(amount=5.0)], (6, 3), [PassLine(amount=5.0)]),
        (5, 6, None, [PassLine(amount=5.0)], (2, 4), [PassLine(amount=5.0)]),
        (5, 6, None, [PassLine(amount=5.0)], (3, 3), [PassLine(amount=5.0)]),
        (5, 8, None, [PassLine(amount=5.0)], (3, 5), [PassLine(amount=5.0)]),
        (None, 5, None, [], (3, 2), [PassLine(amount=5.0)]),
        (10, 10, None, [PassLine(amount=5.0)], (5, 5), [PassLine(amount=5.0)]),
        (10, 6, None, [PassLine(amount=5.0)], (4, 2), [PassLine(amount=5.0)]),
        (10, 12, None, [PassLine(amount=5.0)], (6, 6), [PassLine(amount=5.0)]),
        (10, 12, None, [PassLine(amount=5.0)], (6, 6), [PassLine(amount=5.0)]),
        (10, 5, None, [PassLine(amount=5.0)], (2, 3), [PassLine(amount=5.0)]),
        (None, 7, None, [], (4, 3), [PassLine(amount=5.0)]),
        (8, 8, None, [PassLine(amount=5.0)], (5, 3), [PassLine(amount=5.0)]),
        (None, 7, None, [], (6, 1), [PassLine(amount=5.0)]),
        (10, 10, None, [PassLine(amount=5.0)], (4, 6), [PassLine(amount=5.0)]),
        (10, 9, None, [PassLine(amount=5.0)], (6, 3), [PassLine(amount=5.0)]),
        (10, 6, None, [PassLine(amount=5.0)], (1, 5), [PassLine(amount=5.0)]),
        (10, 8, None, [PassLine(amount=5.0)], (4, 4), [PassLine(amount=5.0)]),
        (10, 3, None, [PassLine(amount=5.0)], (2, 1), [PassLine(amount=5.0)]),
        (None, 10, None, [], (6, 4), [PassLine(amount=5.0)]),
        (None, 12, None, [], (6, 6), [PassLine(amount=5.0)]),
        (None, 7, None, [], (6, 1), [PassLine(amount=5.0)]),
        (6, 6, None, [PassLine(amount=5.0)], (2, 4), [PassLine(amount=5.0)]),
        (6, 9, None, [PassLine(amount=5.0)], (3, 6), [PassLine(amount=5.0)]),
        (None, 7, None, [], (6, 1), [PassLine(amount=5.0)]),
        (9, 9, None, [PassLine(amount=5.0)], (6, 3), [PassLine(amount=5.0)]),
        (None, 9, None, [], (6, 3), [PassLine(amount=5.0)]),
        (9, 9, None, [PassLine(amount=5.0)], (3, 6), [PassLine(amount=5.0)]),
        (9, 4, None, [PassLine(amount=5.0)], (1, 3), [PassLine(amount=5.0)]),
        (9, 5, None, [PassLine(amount=5.0)], (2, 3), [PassLine(amount=5.0)]),
        (9, 6, None, [PassLine(amount=5.0)], (2, 4), [PassLine(amount=5.0)]),
        (9, 6, None, [PassLine(amount=5.0)], (2, 4), [PassLine(amount=5.0)]),
        (9, 11, None, [PassLine(amount=5.0)], (5, 6), [PassLine(amount=5.0)]),
        (None, 9, None, [], (6, 3), [PassLine(amount=5.0)]),
        (9, 9, None, [PassLine(amount=5.0)], (6, 3), [PassLine(amount=5.0)]),
        (9, 5, None, [PassLine(amount=5.0)], (1, 4), [PassLine(amount=5.0)]),
        (9, 6, None, [PassLine(amount=5.0)], (2, 4), [PassLine(amount=5.0)]),
        (9, 2, None, [PassLine(amount=5.0)], (1, 1), [PassLine(amount=5.0)]),
        (None, 9, None, [], (4, 5), [PassLine(amount=5.0)]),
        (None, 7, None, [], (2, 5), [PassLine(amount=5.0)]),
        (6, 6, None, [PassLine(amount=5.0)], (3, 3), [PassLine(amount=5.0)]),
        (6, 10, None, [PassLine(amount=5.0)], (5, 5), [PassLine(amount=5.0)]),
        (None, 7, None, [], (3, 4), [PassLine(amount=5.0)]),
        (8, 8, None, [PassLine(amount=5.0)], (2, 6), [PassLine(amount=5.0)]),
        (8, 2, None, [PassLine(amount=5.0)], (1, 1), [PassLine(amount=5.0)]),
        (8, 11, None, [PassLine(amount=5.0)], (5, 6), [PassLine(amount=5.0)]),
        (None, 7, None, [], (2, 5), [PassLine(amount=5.0)]),
        (None, 3, None, [], (2, 1), [PassLine(amount=5.0)]),
        (8, 8, None, [PassLine(amount=5.0)], (2, 6), [PassLine(amount=5.0)]),
        (8, 9, None, [PassLine(amount=5.0)], (5, 4), [PassLine(amount=5.0)]),
        (8, 5, None, [PassLine(amount=5.0)], (1, 4), [PassLine(amount=5.0)]),
        (8, 11, None, [PassLine(amount=5.0)], (6, 5), [PassLine(amount=5.0)]),
        (None, 7, None, [], (3, 4), [PassLine(amount=5.0)]),
        (8, 8, None, [PassLine(amount=5.0)], (3, 5), [PassLine(amount=5.0)]),
        (None, 8, None, [], (2, 6), [PassLine(amount=5.0)]),
        (8, 8, None, [PassLine(amount=5.0)], (2, 6), [PassLine(amount=5.0)]),
        (None, 7, None, [], (3, 4), [PassLine(amount=5.0)]),
        (8, 8, None, [PassLine(amount=5.0)], (4, 4), [PassLine(amount=5.0)]),
        (8, 2, None, [PassLine(amount=5.0)], (1, 1), [PassLine(amount=5.0)]),
        (None, 8, None, [], (4, 4), [PassLine(amount=5.0)]),
        (10, 10, None, [PassLine(amount=5.0)], (4, 6), [PassLine(amount=5.0)]),
        (None, 7, None, [], (1, 6), [PassLine(amount=5.0)]),
        (10, 10, None, [PassLine(amount=5.0)], (4, 6), [PassLine(amount=5.0)]),
        (10, 5, None, [PassLine(amount=5.0)], (1, 4), [PassLine(amount=5.0)]),
        (None, 7, None, [], (2, 5), [PassLine(amount=5.0)]),
        (None, 11, None, [], (6, 5), [PassLine(amount=5.0)]),
        (None, 3, None, [], (2, 1), [PassLine(amount=5.0)]),
        (10, 10, None, [PassLine(amount=5.0)], (4, 6), [PassLine(amount=5.0)]),
        (10, 8, None, [PassLine(amount=5.0)], (5, 3), [PassLine(amount=5.0)]),
        (10, 4, None, [PassLine(amount=5.0)], (2, 2), [PassLine(amount=5.0)]),
        (10, 2, None, [PassLine(amount=5.0)], (1, 1), [PassLine(amount=5.0)]),
        (10, 8, None, [PassLine(amount=5.0)], (5, 3), [PassLine(amount=5.0)]),
        (None, 7, None, [], (5, 2), [PassLine(amount=5.0)]),
        (None, 7, None, [], (1, 6), [PassLine(amount=5.0)]),
        (10, 10, None, [PassLine(amount=5.0)], (6, 4), [PassLine(amount=5.0)]),
        (10, 6, None, [PassLine(amount=5.0)], (3, 3), [PassLine(amount=5.0)]),
        (10, 6, None, [PassLine(amount=5.0)], (4, 2), [PassLine(amount=5.0)]),
        (10, 9, None, [PassLine(amount=5.0)], (5, 4), [PassLine(amount=5.0)]),
        (10, 4, None, [PassLine(amount=5.0)], (2, 2), [PassLine(amount=5.0)]),
        (10, 11, None, [PassLine(amount=5.0)], (6, 5), [PassLine(amount=5.0)]),
        (None, 7, None, [], (1, 6), [PassLine(amount=5.0)]),
        (None, 7, None, [], (5, 2), [PassLine(amount=5.0)]),
        (None, 7, None, [], (5, 2), [PassLine(amount=5.0)]),
        (None, 7, None, [], (4, 3), [PassLine(amount=5.0)]),
        (4, 4, None, [PassLine(amount=5.0)], (3, 1), [PassLine(amount=5.0)]),
        (4, 11, None, [PassLine(amount=5.0)], (5, 6), [PassLine(amount=5.0)]),
        (4, 10, None, [PassLine(amount=5.0)], (6, 4), [PassLine(amount=5.0)]),
        (4, 6, None, [PassLine(amount=5.0)], (5, 1), [PassLine(amount=5.0)]),
        (None, 7, None, [], (6, 1), [PassLine(amount=5.0)]),
        (4, 4, None, [PassLine(amount=5.0)], (1, 3), [PassLine(amount=5.0)]),
        (4, 9, None, [PassLine(amount=5.0)], (6, 3), [PassLine(amount=5.0)]),
        (4, 5, None, [PassLine(amount=5.0)], (3, 2), [PassLine(amount=5.0)]),
        (None, 4, None, [], (3, 1), [PassLine(amount=5.0)]),
        (10, 10, None, [PassLine(amount=5.0)], (6, 4), [PassLine(amount=5.0)]),
        (10, 8, None, [PassLine(amount=5.0)], (4, 4), [PassLine(amount=5.0)]),
        (10, 9, None, [PassLine(amount=5.0)], (4, 5), [PassLine(amount=5.0)]),
        (None, 10, None, [], (6, 4), [PassLine(amount=5.0)]),
        (4, 4, None, [PassLine(amount=5.0)], (3, 1), [PassLine(amount=5.0)]),
        (None, 7, None, [], (4, 3), [PassLine(amount=5.0)]),
        (None, 7, None, [], (4, 3), [PassLine(amount=5.0)]),
        (8, 8, None, [PassLine(amount=5.0)], (6, 2), [PassLine(amount=5.0)]),
        (8, 2, None, [PassLine(amount=5.0)], (1, 1), [PassLine(amount=5.0)]),
        (8, 5, None, [PassLine(amount=5.0)], (4, 1), [PassLine(amount=5.0)]),
        (8, 6, None, [PassLine(amount=5.0)], (5, 1), [PassLine(amount=5.0)]),
        (8, 12, None, [PassLine(amount=5.0)], (6, 6), [PassLine(amount=5.0)]),
        (None, 7, None, [], (5, 2), [PassLine(amount=5.0)]),
        (9, 9, None, [PassLine(amount=5.0)], (5, 4), [PassLine(amount=5.0)]),
        (9, 11, None, [PassLine(amount=5.0)], (5, 6), [PassLine(amount=5.0)]),
        (None, 7, None, [], (6, 1), [PassLine(amount=5.0)]),
        (None, 12, None, [], (6, 6), [PassLine(amount=5.0)]),
        (8, 8, None, [PassLine(amount=5.0)], (5, 3), [PassLine(amount=5.0)]),
        (None, 7, None, [], (2, 5), [PassLine(amount=5.0)]),
        (9, 9, None, [PassLine(amount=5.0)], (5, 4), [PassLine(amount=5.0)]),
        (9, 8, None, [PassLine(amount=5.0)], (6, 2), [PassLine(amount=5.0)]),
        (None, 7, None, [], (6, 1), [PassLine(amount=5.0)]),
        (None, 3, None, [], (2, 1), [PassLine(amount=5.0)]),
        (5, 5, None, [PassLine(amount=5.0)], (2, 3), [PassLine(amount=5.0)]),
        (5, 6, None, [PassLine(amount=5.0)], (3, 3), [PassLine(amount=5.0)]),
        (5, 6, None, [PassLine(amount=5.0)], (3, 3), [PassLine(amount=5.0)]),
        (5, 6, None, [PassLine(amount=5.0)], (5, 1), [PassLine(amount=5.0)]),
        (5, 4, None, [PassLine(amount=5.0)], (2, 2), [PassLine(amount=5.0)]),
        (None, 7, None, [], (5, 2), [PassLine(amount=5.0)]),
        (9, 9, None, [PassLine(amount=5.0)], (3, 6), [PassLine(amount=5.0)]),
        (None, 9, None, [], (3, 6), [PassLine(amount=5.0)]),
        (9, 9, None, [PassLine(amount=5.0)], (4, 5), [PassLine(amount=5.0)]),
        (9, 3, None, [PassLine(amount=5.0)], (2, 1), [PassLine(amount=5.0)]),
        (9, 6, None, [PassLine(amount=5.0)], (4, 2), [PassLine(amount=5.0)]),
        (None, 9, None, [], (3, 6), [PassLine(amount=5.0)]),
        (None, 12, None, [], (6, 6), [PassLine(amount=5.0)]),
        (None, 11, None, [], (5, 6), [PassLine(amount=5.0)]),
        (10, 10, None, [PassLine(amount=5.0)], (6, 4), [PassLine(amount=5.0)]),
        (10, 9, None, [PassLine(amount=5.0)], (3, 6), [PassLine(amount=5.0)]),
        (10, 4, None, [PassLine(amount=5.0)], (1, 3), [PassLine(amount=5.0)]),
        (10, 9, None, [PassLine(amount=5.0)], (5, 4), [PassLine(amount=5.0)]),
        (10, 6, None, [PassLine(amount=5.0)], (5, 1), [PassLine(amount=5.0)]),
        (10, 9, None, [PassLine(amount=5.0)], (4, 5), [PassLine(amount=5.0)]),
        (10, 5, None, [PassLine(amount=5.0)], (3, 2), [PassLine(amount=5.0)]),
        (10, 6, None, [PassLine(amount=5.0)], (3, 3), [PassLine(amount=5.0)]),
        (10, 4, None, [PassLine(amount=5.0)], (2, 2), [PassLine(amount=5.0)]),
        (10, 4, None, [PassLine(amount=5.0)], (3, 1), [PassLine(amount=5.0)]),
        (10, 8, None, [PassLine(amount=5.0)], (4, 4), [PassLine(amount=5.0)]),
        (10, 8, None, [PassLine(amount=5.0)], (3, 5), [PassLine(amount=5.0)]),
        (10, 9, None, [PassLine(amount=5.0)], (5, 4), [PassLine(amount=5.0)]),
        (10, 9, None, [PassLine(amount=5.0)], (3, 6), [PassLine(amount=5.0)]),
        (10, 8, None, [PassLine(amount=5.0)], (3, 5), [PassLine(amount=5.0)]),
        (10, 8, None, [PassLine(amount=5.0)], (6, 2), [PassLine(amount=5.0)]),
        (10, 5, None, [PassLine(amount=5.0)], (1, 4), [PassLine(amount=5.0)]),
        (10, 4, None, [PassLine(amount=5.0)], (1, 3), [PassLine(amount=5.0)]),
        (10, 9, None, [PassLine(amount=5.0)], (6, 3), [PassLine(amount=5.0)]),
        (10, 8, None, [PassLine(amount=5.0)], (5, 3), [PassLine(amount=5.0)]),
        (None, 10, None, [], (5, 5), [PassLine(amount=5.0)]),
        (6, 6, None, [PassLine(amount=5.0)], (5, 1), [PassLine(amount=5.0)]),
        (6, 10, None, [PassLine(amount=5.0)], (4, 6), [PassLine(amount=5.0)]),
        (6, 5, None, [PassLine(amount=5.0)], (4, 1), [PassLine(amount=5.0)]),
        (None, 6, None, [], (5, 1), [PassLine(amount=5.0)]),
        (None, 7, None, [], (4, 3), [PassLine(amount=5.0)]),
        (10, 10, None, [PassLine(amount=5.0)], (5, 5), [PassLine(amount=5.0)]),
        (10, 9, None, [PassLine(amount=5.0)], (4, 5), [PassLine(amount=5.0)]),
        (10, 8, None, [PassLine(amount=5.0)], (6, 2), [PassLine(amount=5.0)]),
        (10, 11, None, [PassLine(amount=5.0)], (5, 6), [PassLine(amount=5.0)]),
        (10, 6, None, [PassLine(amount=5.0)], (4, 2), [PassLine(amount=5.0)]),
        (10, 6, None, [PassLine(amount=5.0)], (5, 1), [PassLine(amount=5.0)]),
        (10, 9, None, [PassLine(amount=5.0)], (5, 4), [PassLine(amount=5.0)]),
        (None, 7, None, [], (4, 3), [PassLine(amount=5.0)]),
        (9, 9, None, [PassLine(amount=5.0)], (5, 4), [PassLine(amount=5.0)]),
        (9, 5, None, [PassLine(amount=5.0)], (4, 1), [PassLine(amount=5.0)]),
        (9, 5, None, [PassLine(amount=5.0)], (2, 3), [PassLine(amount=5.0)]),
        (None, 9, None, [], (4, 5), [PassLine(amount=5.0)]),
        (None, 7, None, [], (5, 2), [PassLine(amount=5.0)]),
        (6, 6, None, [PassLine(amount=5.0)], (2, 4), [PassLine(amount=5.0)]),
        (None, 6, None, [], (2, 4), [PassLine(amount=5.0)]),
        (6, 6, None, [PassLine(amount=5.0)], (1, 5), [PassLine(amount=5.0)]),
        (6, 12, None, [PassLine(amount=5.0)], (6, 6), [PassLine(amount=5.0)]),
        (6, 8, None, [PassLine(amount=5.0)], (5, 3), [PassLine(amount=5.0)]),
        (None, 6, None, [], (5, 1), [PassLine(amount=5.0)]),
    ],
)
def test_passline_integration(
    point, last_roll, strat_info, bets_before, dice_result, bets_after
):
    table = Table()
    table.add_player(
        bankroll=float("inf"), strategy=BetPassLine(5)
    )  # ADD STRATEGY HERE
    table.point.number = point
    table.last_roll = last_roll
    table.players[0].bets = bets_before
    table.dice.result = dice_result
    TableUpdate().run_strategies(table)
    assert table.players[0].bets == bets_after
