Exemple #1
0
def test_comparison():
    price1 = CurrencyWithTax(Currency(10, "EUR"), Currency(15, "EUR"))
    price2 = CurrencyWithTax(Currency(30, "EUR"), Currency(45, "EUR"))
    price_range1 = CurrencyRangeTax(price1, price2)
    price3 = CurrencyWithTax(Currency(40, "EUR"), Currency(60, "EUR"))
    price4 = CurrencyWithTax(Currency(80, "EUR"), Currency(120, "EUR"))
    price_range2 = CurrencyRangeTax(price3, price4)
    assert price_range1 == CurrencyRangeTax(price1, price2)
    assert price_range1 != price_range2
    assert price_range1 != CurrencyRangeTax(price1, price1)
    assert price_range1 != CurrencyRangeTax(
        CurrencyWithTax(Currency(10, "USD"), Currency(15, "USD")),
        CurrencyWithTax(Currency(30, "USD"), Currency(45, "USD")),
    )
    assert price_range1 != price1
def test_zero_clipping():
    price = CurrencyWithTax(Currency(10, "USD"), Currency(10, "USD"))
    result = fixed_discount(price, Currency(30, "USD"))
    assert result.net == Currency(0, "USD")
    assert result.gross == Currency(0, "USD")
Exemple #3
0
def test_ge():
    assert Currency(5, "USD") >= Currency(5, "USD")
    assert not Currency(5, "USD") >= Currency(6, "USD")
    assert Currency(7, "USD") >= Currency(6, "USD")
    with pytest.raises(ValueError):
        Currency(6, "USD") >= Currency(6, "GBP")
Exemple #4
0
def test_subtraction_with_taxed_money_range():
    price1 = CurrencyWithTax(Currency(10, "EUR"), Currency(15, "EUR"))
    price2 = CurrencyWithTax(Currency(30, "EUR"), Currency(45, "EUR"))
    price_range1 = CurrencyRangeTax(price1, price2)
    price3 = CurrencyWithTax(Currency(40, "EUR"), Currency(60, "EUR"))
    price4 = CurrencyWithTax(Currency(80, "EUR"), Currency(120, "EUR"))
    price_range2 = CurrencyRangeTax(price3, price4)
    result = price_range2 - price_range1
    assert result.start == price3 - price1
    assert result.stop == price4 - price2
    with pytest.raises(ValueError):
        price_range2 - CurrencyRangeTax(
            CurrencyWithTax(Currency(1, "BTC"), Currency(1, "BTC")),
            CurrencyWithTax(Currency(2, "BTC"), Currency(2, "BTC")),
        )
Exemple #5
0
def test_add():
    assert Currency(5, "USD") + Currency(6, "USD") == Currency(11, "USD")
    assert not Currency(5, "USD") + Currency(6, "USD") == Currency(12, "USD")
    with pytest.raises(ValueError):
        Currency(5, "USD") + Currency(6, "GBP")
Exemple #6
0
def test_mul():
    assert Currency(6, "USD") * 5 == Currency(30, "USD")
    assert 5 * Currency(4, "USD") == Currency(20, "USD")
    assert not Currency(5, "USD") * 8 == Currency(3, "USD")
Exemple #7
0
def test_str():
    currency = CurrencyWithTax(net=Currency(1, "USD"), gross=Currency(1, "USD"))
    assert str(currency) == "CurrencyWithTax(net=1 USD, gross=1 USD)"
Exemple #8
0
def test_bool():
    assert not Currency(0, "USD")
    assert Currency(1, "GBP")
Exemple #9
0
def test_tax():
    price = CurrencyWithTax(Currency(10, "USD"), Currency(15, "USD"))
    assert price.tax == Currency(5, "USD")
Exemple #10
0
def test_tek_sum():
    assert tek_sum([Currency(5, "USD"), Currency(10, "USD")]) == Currency(15, "USD")
    with pytest.raises(TypeError):
        tek_sum([])
Exemple #11
0
def test_precision():
    price = CurrencyWithTax(Currency("1.01", "BTC"), Currency("1.01", "BTC"))
    result = percentage_discount(price, percentage=50)
    assert result.net == Currency("0.51", "BTC")
    assert result.net == Currency("0.51", "BTC")
Exemple #12
0
def test_currency_mismatch():
    with pytest.raises(ValueError):
        fixed_discount(
            CurrencyWithTax(Currency(10, "BTC"), Currency(10, "BTC")),
            Currency(10, "USD"),
        )
Exemple #13
0
def test_discount_from_net():
    price = CurrencyWithTax(Currency(100, "PLN"), Currency(200, "PLN"))
    result = fractional_discount(price, Decimal("0.5"), from_gross=False)
    assert result.net == Currency(50, "PLN")
    assert result.gross == Currency(150, "PLN")
def test_str():
    price1 = Currency(10, "EUR")
    price2 = Currency(30, "EUR")
    price_range = CurrencyRange(price1, price2)
    assert str(price_range) == ("CurrencyRange(10 EUR 30 EUR)")
Exemple #15
0
def test_sub():
    currency1 = CurrencyWithTax(Currency(10, "USD"), Currency(15, "USD"))
    currency2 = CurrencyWithTax(Currency(30, "USD"), Currency(45, "USD"))
    assert currency2 - currency1 == CurrencyWithTax(
        Currency(20, "USD"), Currency(30, "USD")
    )
    currency3 = currency1 - Currency(5, "USD")
    assert currency3.net == Currency(5, "USD")
    assert currency3.gross == Currency(10, "USD")
    with pytest.raises(ValueError):
        currency1 - CurrencyWithTax(Currency(10, "GBP"), Currency(10, "GBP"))
    with pytest.raises(TypeError):
        currency1 - 1
def test_addition_with_other_types():
    price1 = Currency(10, "EUR")
    price2 = Currency(30, "EUR")
    price_range = CurrencyRange(price1, price2)
    with pytest.raises(TypeError):
        price_range + 1
Exemple #17
0
def test_mult():
    currency1 = CurrencyWithTax(Currency(10, "EUR"), Currency(20, "EUR"))
    assert currency1 * 2 == CurrencyWithTax(Currency(20, "EUR"), Currency(40, "EUR"))
    assert 2 * currency1 == currency1 * 2
    with pytest.raises(TypeError):
        currency1 * currency1
Exemple #18
0
def test_div():
    assert Currency(12, "USD") / Currency(6, "USD") == Decimal(2)
    assert Currency(12, "USD") / Decimal("2") == Currency(6, "USD")
Exemple #19
0
def test_div():
    currency1 = CurrencyWithTax(Currency(10, "EUR"), Currency(20, "EUR"))
    assert currency1 / 2 == CurrencyWithTax(Currency(5, "EUR"), Currency(10, "EUR"))
    with pytest.raises(TypeError):
        currency1 / currency1
Exemple #20
0
def test_sub():
    assert Currency(6, "USD") - Currency(6, "USD") == Currency(0, "USD")
    assert Currency(5, "USD") - Currency(4, "USD") == Currency(1, "USD")
    assert not Currency(5, "USD") - Currency(4, "USD") == Currency(3, "USD")
    with pytest.raises(ValueError):
        Currency(5, "USD") - Currency(6, "GBP")
Exemple #21
0
def test_comparison():
    currency = CurrencyWithTax(Currency(10, "EUR"), Currency(15, "EUR"))
    assert currency == CurrencyWithTax(Currency(10, "EUR"), Currency(15, "EUR"))
    assert currency != CurrencyWithTax(Currency(20, "EUR"), Currency(30, "EUR"))
    assert currency != CurrencyWithTax(Currency(10, "GBP"), Currency(15, "GBP"))
    assert currency != Currency(10, "EUR")
    assert currency < CurrencyWithTax(Currency(20, "EUR"), Currency(30, "EUR"))
    assert currency <= CurrencyWithTax(Currency(10, "EUR"), Currency(15, "EUR"))
    assert currency <= CurrencyWithTax(Currency(20, "EUR"), Currency(30, "EUR"))
    assert currency > CurrencyWithTax(Currency(1, "EUR"), Currency(1, "EUR"))
    assert currency >= CurrencyWithTax(Currency(10, "EUR"), Currency(15, "EUR"))
    assert currency >= CurrencyWithTax(Currency(1, "EUR"), Currency(1, "EUR"))
    assert not currency <= CurrencyWithTax(Currency(1, "EUR"), Currency(1, "EUR"))
    assert not currency >= CurrencyWithTax(Currency(20, "EUR"), Currency(30, "EUR"))
    with pytest.raises(ValueError):
        currency < CurrencyWithTax(Currency(10, "GBP"), Currency(15, "GBP"))
    with pytest.raises(TypeError):
        currency >= Currency(1, "EUR")
    with pytest.raises(TypeError):
        currency < Currency(20, "EUR")
Exemple #22
0
def test_str():
    currency = Currency(5, "USD")
    assert str(currency) == "5 USD"
Exemple #23
0
def test_quantize():
    price = CurrencyWithTax(Currency("1.001", "EUR"), Currency("1.001", "EUR"))
    assert price.quantize() == (
        CurrencyWithTax(Currency("1.00", "EUR"), Currency("1.00", "EUR"))
    )
Exemple #24
0
def test_range():
    price_range = CurrencyRange(Currency(10, "BTC"), Currency(20, "BTC"))
    result = flat_tax(price_range, 1)
    assert result.start == CurrencyWithTax(Currency(10, "BTC"), Currency(20, "BTC"))
    assert result.stop == CurrencyWithTax(Currency(20, "BTC"), Currency(40, "BTC"))
    price_range = CurrencyRangeTax(
        CurrencyWithTax(Currency(10, "BTC"), Currency(10, "BTC")),
        CurrencyWithTax(Currency(20, "BTC"), Currency(20, "BTC")),
    )
    result = flat_tax(price_range, 1)
    assert result.start == CurrencyWithTax(Currency(10, "BTC"), Currency(20, "BTC"))
    assert result.stop == CurrencyWithTax(Currency(20, "BTC"), Currency(40, "BTC"))
Exemple #25
0
def test_currency():
    price = CurrencyWithTax(Currency(1, "PLN"), Currency(1, "PLN"))
    assert price.currency == "PLN"
Exemple #26
0
def test_subtraction_with_other_types():
    price1 = CurrencyWithTax(Currency(40, "EUR"), Currency(60, "EUR"))
    price2 = CurrencyWithTax(Currency(80, "EUR"), Currency(120, "EUR"))
    price_range = CurrencyRangeTax(price1, price2)
    with pytest.raises(TypeError):
        price_range - 1
def test_currency():
    price1 = Currency(10, "EUR")
    price2 = Currency(30, "EUR")
    price_range = CurrencyRange(price1, price2)
    assert price_range.currency == "EUR"
Exemple #28
0
def test_currency():
    price1 = CurrencyWithTax(Currency(10, "EUR"), Currency(15, "EUR"))
    price2 = CurrencyWithTax(Currency(30, "EUR"), Currency(45, "EUR"))
    price_range = CurrencyRangeTax(price1, price2)
    assert price_range.currency == "EUR"
Exemple #29
0
def test_application():
    price = CurrencyWithTax(Currency(30, "BTC"), Currency(30, "BTC"))
    discount = partial(fixed_discount, discount=Currency(10, "BTC"))
    result = discount(price)
    assert result.net == Currency(20, "BTC")
    assert result.gross == Currency(20, "BTC")
    price_range = CurrencyRange(price.net, price.net)
    result = discount(price_range)
    assert result.start == Currency(20, "BTC")
    assert result.stop == Currency(20, "BTC")
    price_range = CurrencyRangeTax(price, price)
    result = discount(price_range)
    assert result.start == CurrencyWithTax(Currency(20, "BTC"),
                                           Currency(20, "BTC"))
    assert result.stop == CurrencyWithTax(Currency(20, "BTC"),
                                          Currency(20, "BTC"))
    with pytest.raises(TypeError):
        discount(1)