usawa

Signed, immutable accounting.
Log | Files | Refs | Submodules | LICENSE

unit.py (2452B)


      1 import unittest
      2 import logging
      3 
      4 from usawa import UnitIndex
      5 
      6 logging.basicConfig(level=logging.DEBUG)
      7 
      8 
      9 class TestUnit(unittest.TestCase):
     10     
     11     def setUp(self):
     12         self.uidx_default = UnitIndex('FOO')
     13         self.uidx_three = UnitIndex('FOO', precision=3)
     14         self.uidx_none = UnitIndex('FOO', precision=0)
     15         self.uidx_default.add('BAR', precision=4, rate=0.23)
     16 
     17 
     18     def test_tostring(self):
     19         v = self.uidx_default.to_floatstring('FOO', 12345)
     20         self.assertEqual(v, '123.45')
     21         v = self.uidx_three.to_floatstring('FOO', 12345)
     22         self.assertEqual(v, '12.345')
     23         v = self.uidx_three.to_floatstring('FOO', 123)
     24         self.assertEqual(v, '0.123')
     25         v = self.uidx_three.to_floatstring('FOO', 1)
     26         self.assertEqual(v, '0.001')
     27         v = self.uidx_none.to_floatstring('FOO', 12345)
     28         self.assertEqual(v, '12345')
     29         v = self.uidx_none.to_floatstring('FOO', 123)
     30         self.assertEqual(v, '123')
     31         v = self.uidx_default.to_floatstring('BAR', 12345)
     32         self.assertEqual(v, '1.2345')
     33 
     34 
     35     def test_fromstring(self):
     36         v = self.uidx_default.from_floatstring('FOO', '123.45')
     37         self.assertEqual(v, 12345)
     38         v = self.uidx_three.from_floatstring('FOO', '12.345')
     39         self.assertEqual(v, 12345)
     40         v = self.uidx_three.from_floatstring('FOO', '0.123')
     41         self.assertEqual(v, 123)
     42         v = self.uidx_three.from_floatstring('FOO', '0.001')
     43         self.assertEqual(v, 1)
     44         v = self.uidx_none.from_floatstring('FOO', '12345')
     45         self.assertEqual(v, 12345)
     46         v = self.uidx_none.from_floatstring('FOO', '123')
     47         self.assertEqual(v, 123)
     48         v = self.uidx_default.from_floatstring('BAR', '1.2345')
     49         self.assertEqual(v, 12345)
     50         v = self.uidx_default.from_floatstring('FOO', '-3.390')
     51         self.assertEqual(v, -3390)
     52 
     53 
     54 
     55     def test_unit_rates(self):
     56         #self.uidx_default.add('BAR', precision=3)
     57         #r = self.uidx_default.val('BAR', 42333)
     58         with self.assertRaises(ValueError):
     59             self.uidx_default.set_rate('FOO', 230000)
     60         r = self.uidx_default.val('BAR', 4233300)
     61         self.assertEqual(r[0], 9736)
     62         self.assertEqual(r[1], 590000000)
     63 
     64         self.uidx_default.set_rate('BAR', 1000000000)
     65         r = self.uidx_default.val('BAR', 4233300)
     66         self.assertEqual(r[0], 42333)
     67         self.assertEqual(r[1], 0)
     68 
     69 
     70 if __name__ == '__main__':
     71     unittest.main()