1 from unittest
import TestCase, main
3 from gnucash
import GncNumeric, GNC_DENOM_AUTO, GNC_HOW_DENOM_FIXED, \
4 GNC_HOW_RND_NEVER, GNC_HOW_RND_FLOOR, GNC_HOW_RND_CEIL
9 self.assertEqual(str(num),
"0/1")
10 self.assertEqual(num.num(), 0)
11 self.assertEqual(num.denom(), 1)
13 def test_from_num_denom(self):
14 num = GncNumeric(1, 2)
15 self.assertEqual(str(num),
"1/2")
16 self.assertEqual(num.num(), 1)
17 self.assertEqual(num.denom(), 2)
19 def test_from_int(self):
21 self.assertEqual(str(num),
"3/1")
22 self.assertEqual(num.num(), 3)
23 self.assertEqual(num.denom(), 1)
25 with self.assertRaises(Exception)
as context:
29 self.assertTrue(isinstance(context.exception, TypeError)
or 30 isinstance(context.exception, OverflowError))
32 def test_from_float(self):
33 num = GncNumeric(3.1, 20, GNC_HOW_DENOM_FIXED | GNC_HOW_RND_NEVER)
34 self.assertEqual(str(num),
"62/20")
35 self.assertEqual(num.num(), 62)
36 self.assertEqual(num.denom(), 20)
38 num = GncNumeric(1/3.0, 10000000000, GNC_HOW_RND_FLOOR)
39 self.assertEqual(str(num),
"3333333333/10000000000")
40 self.assertEqual(num.num(), 3333333333)
41 self.assertEqual(num.denom(), 10000000000)
43 num = GncNumeric(1/3.0, 10000000000, GNC_HOW_RND_CEIL)
44 self.assertEqual(str(num),
"3333333334/10000000000")
45 self.assertEqual(num.num(), 3333333334)
46 self.assertEqual(num.denom(), 10000000000)
48 def test_from_float_auto(self):
50 self.assertEqual(str(num),
"31/10")
51 self.assertEqual(num.num(), 31)
52 self.assertEqual(num.denom(), 10)
54 def test_from_instance(self):
56 num = GncNumeric(instance=orig.instance)
57 self.assertEqual(str(num),
"3/1")
58 self.assertEqual(num.num(), 3)
59 self.assertEqual(num.denom(), 1)
61 def test_from_str(self):
62 num = GncNumeric(
"3.1")
63 self.assertEqual(str(num),
"31/10")
64 self.assertEqual(num.num(), 31)
65 self.assertEqual(num.denom(), 10)
67 num = GncNumeric(
"1/3")
68 self.assertEqual(str(num),
"1/3")
69 self.assertEqual(num.num(), 1)
70 self.assertEqual(num.denom(), 3)
72 def test_to_str(self):
73 num = GncNumeric(
"1000/3")
74 self.assertEqual(str(num),
"1000/3")
76 num = GncNumeric(1, 0)
77 self.assertEqual(str(num),
"1/0")
79 def test_to_double(self):
80 for test_num
in [0.0, 1.1, -1.1, 1/3.0]:
81 self.assertEqual(GncNumeric(test_num).to_double(), test_num)
83 def test_to_fraction(self):
84 fraction = GncNumeric(
"1000/3").to_fraction()
85 self.assertEqual(fraction.numerator, 1000)
86 self.assertEqual(fraction.denominator, 3)
88 def test_incorect_args(self):
89 with self.assertRaises(TypeError):
92 with self.assertRaises(TypeError):
95 with self.assertRaises(TypeError):
96 GncNumeric(1.1,
"round")
98 with self.assertRaises(TypeError):
99 GncNumeric(complex(1, 1))
101 if __name__ ==
'__main__':