def test_handle_decimals():
    assert split_bill(
        [{"price": 100, "quantity": 1}],
        ["*****@*****.**", "*****@*****.**", "*****@*****.**"],
    ) == {
        "*****@*****.**": 34,
        "*****@*****.**": 33,
        "*****@*****.**": 33,
    }

    assert split_bill(
        [{"price": 200, "quantity": 1}],
        ["*****@*****.**", "*****@*****.**", "*****@*****.**"],
    ) == {
        "*****@*****.**": 67,
        "*****@*****.**": 67,
        "*****@*****.**": 66,
    }
def test_handle_multiple_items():
    assert split_bill(
        [
            {"price": 200, "quantity": 4},
            {"price": 300, "quantity": 3},
            {"price": 532, "quantity": 33},
        ],
        ["*****@*****.**", "*****@*****.**", "*****@*****.**"],
    ) == {
        "*****@*****.**": 6419,
        "*****@*****.**": 6419,
        "*****@*****.**": 6418,
    }
def test_empty_emails():
    assert (
        split_bill([{"price": 20, "quantity": 2}, {"price": 300, "quantity": 1}], [])
        == {}
    )
def test_empty_lists():
    assert split_bill([], []) == {}
def test_empty_items():
    assert split_bill([], ["*****@*****.**"]) == {"*****@*****.**": 0}