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()