]> git.proxmox.com Git - mirror_edk2.git/blame - AppPkg/Applications/Python/Python-2.7.10/Lib/json/tests/test_decode.py
EmbeddedPkg: Extend NvVarStoreFormattedLib LIBRARY_CLASS
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.10 / Lib / json / tests / test_decode.py
CommitLineData
3257aa99
DM
1import decimal\r
2from StringIO import StringIO\r
3from collections import OrderedDict\r
4from json.tests import PyTest, CTest\r
5\r
6\r
7class TestDecode(object):\r
8 def test_decimal(self):\r
9 rval = self.loads('1.1', parse_float=decimal.Decimal)\r
10 self.assertTrue(isinstance(rval, decimal.Decimal))\r
11 self.assertEqual(rval, decimal.Decimal('1.1'))\r
12\r
13 def test_float(self):\r
14 rval = self.loads('1', parse_int=float)\r
15 self.assertTrue(isinstance(rval, float))\r
16 self.assertEqual(rval, 1.0)\r
17\r
18 def test_decoder_optimizations(self):\r
19 # Several optimizations were made that skip over calls to\r
20 # the whitespace regex, so this test is designed to try and\r
21 # exercise the uncommon cases. The array cases are already covered.\r
22 rval = self.loads('{ "key" : "value" , "k":"v" }')\r
23 self.assertEqual(rval, {"key":"value", "k":"v"})\r
24\r
25 def test_empty_objects(self):\r
26 self.assertEqual(self.loads('{}'), {})\r
27 self.assertEqual(self.loads('[]'), [])\r
28 self.assertEqual(self.loads('""'), u"")\r
29 self.assertIsInstance(self.loads('""'), unicode)\r
30\r
31 def test_object_pairs_hook(self):\r
32 s = '{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}'\r
33 p = [("xkd", 1), ("kcw", 2), ("art", 3), ("hxm", 4),\r
34 ("qrt", 5), ("pad", 6), ("hoy", 7)]\r
35 self.assertEqual(self.loads(s), eval(s))\r
36 self.assertEqual(self.loads(s, object_pairs_hook=lambda x: x), p)\r
37 self.assertEqual(self.json.load(StringIO(s),\r
38 object_pairs_hook=lambda x: x), p)\r
39 od = self.loads(s, object_pairs_hook=OrderedDict)\r
40 self.assertEqual(od, OrderedDict(p))\r
41 self.assertEqual(type(od), OrderedDict)\r
42 # the object_pairs_hook takes priority over the object_hook\r
43 self.assertEqual(self.loads(s, object_pairs_hook=OrderedDict,\r
44 object_hook=lambda x: None),\r
45 OrderedDict(p))\r
46 # check that empty objects literals work (see #17368)\r
47 self.assertEqual(self.loads('{}', object_pairs_hook=OrderedDict),\r
48 OrderedDict())\r
49 self.assertEqual(self.loads('{"empty": {}}',\r
50 object_pairs_hook=OrderedDict),\r
51 OrderedDict([('empty', OrderedDict())]))\r
52\r
53 def test_extra_data(self):\r
54 s = '[1, 2, 3]5'\r
55 msg = 'Extra data'\r
56 self.assertRaisesRegexp(ValueError, msg, self.loads, s)\r
57\r
58 def test_invalid_escape(self):\r
59 s = '["abc\\y"]'\r
60 msg = 'escape'\r
61 self.assertRaisesRegexp(ValueError, msg, self.loads, s)\r
62\r
63 def test_negative_index(self):\r
64 d = self.json.JSONDecoder()\r
65 self.assertRaises(ValueError, d.raw_decode, 'a'*42, -50000)\r
66 self.assertRaises(ValueError, d.raw_decode, u'a'*42, -50000)\r
67\r
68class TestPyDecode(TestDecode, PyTest): pass\r
69class TestCDecode(TestDecode, CTest): pass\r