splitbill/test.py
2023-09-19 17:46:22 +02:00

32 lines
1 KiB
Python

import random
from splitbill import solve, perform_transfers
import pytest
@pytest.mark.parametrize("tolerance", [0, 1, 2, 10, 100])
def test_random(tolerance):
balances = {str(k): random.randint(-200, 200) for k in range(7)}
balances["7"] = -sum(balances.values())
balances = {k: v for k, v in balances.items() if v != 0}
transactions = solve(balances, tolerance)
assert abs(sum(perform_transfers(balances, transactions).values())) <= tolerance
def test_bug1():
tolerance = 100
balances = {'0': -39, '1': 139, '2': -54, '3': 99, '4': 13, '5': 175, '6': -173, '7': -160}
transactions = solve(balances, tolerance=tolerance)
assert abs(sum(perform_transfers(balances, transactions).values())) <= tolerance
def test_2_subgroups():
balances = {
"A": 50,
"B": -20,
"C": -30,
"D": 70,
"E": -35,
"F": -35,
}
transactions = solve(balances)
assert abs(sum(perform_transfers(balances, transactions).values())) == 0
assert len(transactions) == 4