def test_substraction_saturating(self): usd1 = rockefeller.Money(amount=90, currency=rockefeller.Currency.USD) usd2 = rockefeller.Money(amount=100, currency=rockefeller.Currency.USD) assert rockefeller.Money(0, rockefeller.Currency.USD) == usd1.remove(usd2) assert rockefeller.Money(10, rockefeller.Currency.USD) == usd2.remove(usd1)
def test_division_divmod(self): usd1 = rockefeller.Money(amount=25, currency=rockefeller.Currency.USD) usd2 = rockefeller.Money(amount=10, currency=rockefeller.Currency.USD) result = (rockefeller.Money(2, rockefeller.Currency.USD), rockefeller.Money(5, rockefeller.Currency.USD)) assert result == divmod(usd1, usd2)
def test_exchange_indirectional(self): rockefeller.Money.indirection_currency = rockefeller.Currency.USD eur = rockefeller.Money(amount=100, currency=rockefeller.Currency.EUR) clp = rockefeller.Money(amount=60551, currency=rockefeller.Currency.CLP) exchange = eur.exchange_to(rockefeller.Currency.CLP) assert exchange == clp
def test_representation(self): usd = rockefeller.Money(amount=100, currency=rockefeller.Currency.USD) eur = rockefeller.Money(amount=78, currency=rockefeller.Currency.EUR) if PY3: assert '€78' == str(eur) assert '$100' == str(usd) else: assert u'€78' == unicode(eur) assert u'$100' == unicode(usd)
def test_exponent_rounding(self): usd = rockefeller.Money(amount=100.235, currency=rockefeller.Currency.USD) clp = rockefeller.Money(amount=60551.984324, currency=rockefeller.Currency.CLP) assert decimal.Decimal('100.235') == usd.amount assert 100.24 == float(usd) assert decimal.Decimal('60551.984324') == clp.amount assert 60552 == float(clp)
def test_equality(self): usd1 = rockefeller.Money(amount=100, currency=rockefeller.Currency.USD) usd2 = rockefeller.Money(amount=100, currency=rockefeller.Currency.USD) assert usd1 == usd2 usd1 = rockefeller.Money(amount=100, currency=rockefeller.Currency.USD) usd2 = rockefeller.Money(amount=100, currency=rockefeller.Currency.EUR) assert usd1 != usd2 usd1 = rockefeller.Money(amount=100, currency=rockefeller.Currency.USD) usd2 = rockefeller.Money(amount=78, currency=rockefeller.Currency.USD) assert usd1 != usd2
def test_exchange_to_not_set(self): rockefeller.Money.indirection_currency = None usd = rockefeller.Money(amount=100, currency=rockefeller.Currency.EUR) with pytest.raises(rockefeller.exceptions.ExchangeError): usd.exchange_to(rockefeller.Currency.CLP)
def test_as_float(self): usd = rockefeller.Money(amount=100, currency=rockefeller.Currency.USD) assert 100.00 == float(usd)
def test_substraction(self): usd1 = rockefeller.Money(amount=90, currency=rockefeller.Currency.USD) usd2 = rockefeller.Money(amount=100, currency=rockefeller.Currency.USD) assert rockefeller.Money(-10, rockefeller.Currency.USD) == usd1 - usd2
def test_exchange_to(self): usd = rockefeller.Money(amount=100, currency=rockefeller.Currency.USD) eur = rockefeller.Money(amount=78, currency=rockefeller.Currency.EUR) exchange = usd.exchange_to(rockefeller.Currency.EUR) assert exchange == eur
def test_rounded_amount(self): usd = rockefeller.Money(amount=100.100, currency=rockefeller.Currency.USD) assert '100.10' == str(usd.rounded_amount)
def test_rounded_amount_exponent_0(self): clp = rockefeller.Money(amount=100.100, currency=rockefeller.Currency.CLP) assert '100' == str(clp.rounded_amount)
def test_multiplication(self): usd1 = rockefeller.Money(amount=10, currency=rockefeller.Currency.USD) usd2 = rockefeller.Money(amount=10, currency=rockefeller.Currency.USD) assert rockefeller.Money(100, rockefeller.Currency.USD) == usd1 * usd2
def test_as_float_invalid_currency(self): usd = rockefeller.Money(amount=100, currency=None) with pytest.raises(rockefeller.MoneyError): float(usd)
def test_addition(self): usd1 = rockefeller.Money(amount=100, currency=rockefeller.Currency.USD) usd2 = rockefeller.Money(amount=100, currency=rockefeller.Currency.USD) assert rockefeller.Money(200, rockefeller.Currency.USD) == usd1 + usd2
def test_unsupported_division(self): usd1 = rockefeller.Money(amount=100, currency=rockefeller.Currency.USD) with pytest.raises(TypeError): usd1 / 100
def test_division_floor(self): usd1 = rockefeller.Money(amount=10, currency=rockefeller.Currency.USD) usd2 = rockefeller.Money(amount=10, currency=rockefeller.Currency.USD) assert rockefeller.Money(1, rockefeller.Currency.USD) == usd1 // usd2