def test_multiplication(self): val = CV(None) total = val * None self.assertIsNone(total) self.assertIsNone(total) total = None * val self.assertIsNone(total) self.assertIsNone(total) val = CV(Decimal("1000")) total = None * val self.assertIsNone(total) self.assertIsNone(total) total = val * None self.assertIsNone(total) self.assertIsNone(total) total = val * Decimal("2") self.assertEquals(Decimal("2000"), total.as_local(Decimal("500"))) self.assertEquals(Decimal("4"), total.as_usd(Decimal("500"))) total = Decimal("2") * val self.assertEquals(Decimal("2000"), total.as_local(Decimal("500"))) self.assertEquals(Decimal("4"), total.as_usd(Decimal("500"))) total = val total *= Decimal("2") self.assertEquals(Decimal("2000"), total.as_local(Decimal("500"))) self.assertEquals(Decimal("4"), total.as_usd(Decimal("500"))) val = CV(Decimal("4"), Decimal("500")) + CV(Decimal("1000")) total = Decimal("-2") * val self.assertEquals(Decimal("-6000"), total.as_local(Decimal("500"))) self.assertEquals(Decimal("-12"), total.as_usd(Decimal("500"))) # test invalid combinations val1 = CV(Decimal("10")) val2 = CV(Decimal("20")) try: total = val1 * val2 self.assertFalse(True, "Should have thrown, invalid operation") except: pass
def test_division(self): val = CV(None) total = val / None self.assertIsNone(total) self.assertIsNone(total) total = None / val self.assertIsNone(total) self.assertIsNone(total) val = CV(Decimal("1000")) total = None / val self.assertIsNone(total) self.assertIsNone(total) total = val / None self.assertIsNone(total) self.assertIsNone(total) total = val / Decimal("2") self.assertEquals(Decimal("500"), total.as_local(Decimal("500"))) self.assertEquals(Decimal("1"), total.as_usd(Decimal("500"))) total = val total /= Decimal("2") self.assertEquals(Decimal("500"), total.as_local(Decimal("500"))) self.assertEquals(Decimal("1"), total.as_usd(Decimal("500"))) try: total = Decimal("2") / val self.assertTrue( False, "Should have raised exception as numerator must always be CurrencyValue" ) except Exception as e: pass val = CV(Decimal("4"), Decimal("500")) + CV(Decimal("1000")) total = val / Decimal("-2") self.assertEquals(Decimal("-1500"), total.as_local(Decimal("500"))) self.assertEquals(Decimal("-3"), total.as_usd(Decimal("500")))