def test_creation_and_logging():
    b = Memory(db_path=':memory:')
    arg = 1, 2, 3, 'red', 100, 'red', 0.456, 4, 5, 'blue', 0.678, 5, 6, True
    b.log_balance(*arg)
    log = b.get_balance_log(1)
    assert len(log) == 1
    assert tuple(log[0].__dict__.values())[2:] == arg
from fftbg.betting import expected_payoff
from fftbg.bird.memory import Memory

LIMIT = 5000
mem = Memory()
log = mem.get_balance_log(limit=LIMIT)

count = 0
payout_bet_sum = 0
payout_sum = 0
neg_sum = 0
for entry in log:
    if entry.bet_on == entry.left_team:
        payoff_on_bet = expected_payoff(entry.left_prediction, entry.wager,
                                        entry.left_total_on_bet,
                                        entry.right_total_on_bet)
    else:
        payoff_on_bet = expected_payoff(entry.right_prediction, entry.wager,
                                        entry.right_total_on_bet,
                                        entry.left_total_on_bet)

    if entry.bet_on == entry.left_team:
        payoff_on_final = expected_payoff(entry.left_prediction, entry.wager,
                                          entry.left_total_final,
                                          entry.right_total_final)
    else:
        payoff_on_final = expected_payoff(entry.right_prediction, entry.wager,
                                          entry.right_total_final,
                                          entry.left_total_final)

    # print(f'payoff bet: {int(payoff_on_bet):d}, final: {int(payoff_on_final):d}')