]>
Commit | Line | Data |
---|---|---|
3257aa99 DM |
1 | import math\r |
2 | from json.tests import PyTest, CTest\r | |
3 | \r | |
4 | \r | |
5 | class TestFloat(object):\r | |
6 | def test_floats(self):\r | |
7 | for num in [1617161771.7650001, math.pi, math.pi**100,\r | |
8 | math.pi**-100, 3.1]:\r | |
9 | self.assertEqual(float(self.dumps(num)), num)\r | |
10 | self.assertEqual(self.loads(self.dumps(num)), num)\r | |
11 | self.assertEqual(self.loads(unicode(self.dumps(num))), num)\r | |
12 | \r | |
13 | def test_ints(self):\r | |
14 | for num in [1, 1L, 1<<32, 1<<64]:\r | |
15 | self.assertEqual(self.dumps(num), str(num))\r | |
16 | self.assertEqual(int(self.dumps(num)), num)\r | |
17 | self.assertEqual(self.loads(self.dumps(num)), num)\r | |
18 | self.assertEqual(self.loads(unicode(self.dumps(num))), num)\r | |
19 | \r | |
20 | def test_out_of_range(self):\r | |
21 | self.assertEqual(self.loads('[23456789012E666]'), [float('inf')])\r | |
22 | self.assertEqual(self.loads('[-23456789012E666]'), [float('-inf')])\r | |
23 | \r | |
24 | def test_allow_nan(self):\r | |
25 | for val in (float('inf'), float('-inf'), float('nan')):\r | |
26 | out = self.dumps([val])\r | |
27 | if val == val: # inf\r | |
28 | self.assertEqual(self.loads(out), [val])\r | |
29 | else: # nan\r | |
30 | res = self.loads(out)\r | |
31 | self.assertEqual(len(res), 1)\r | |
32 | self.assertNotEqual(res[0], res[0])\r | |
33 | self.assertRaises(ValueError, self.dumps, [val], allow_nan=False)\r | |
34 | \r | |
35 | \r | |
36 | class TestPyFloat(TestFloat, PyTest): pass\r | |
37 | class TestCFloat(TestFloat, CTest): pass\r |