+++ /dev/null
-import decimal\r
-from StringIO import StringIO\r
-from collections import OrderedDict\r
-from json.tests import PyTest, CTest\r
-\r
-\r
-class TestDecode(object):\r
- def test_decimal(self):\r
- rval = self.loads('1.1', parse_float=decimal.Decimal)\r
- self.assertTrue(isinstance(rval, decimal.Decimal))\r
- self.assertEqual(rval, decimal.Decimal('1.1'))\r
-\r
- def test_float(self):\r
- rval = self.loads('1', parse_int=float)\r
- self.assertTrue(isinstance(rval, float))\r
- self.assertEqual(rval, 1.0)\r
-\r
- def test_decoder_optimizations(self):\r
- # Several optimizations were made that skip over calls to\r
- # the whitespace regex, so this test is designed to try and\r
- # exercise the uncommon cases. The array cases are already covered.\r
- rval = self.loads('{ "key" : "value" , "k":"v" }')\r
- self.assertEqual(rval, {"key":"value", "k":"v"})\r
-\r
- def test_empty_objects(self):\r
- self.assertEqual(self.loads('{}'), {})\r
- self.assertEqual(self.loads('[]'), [])\r
- self.assertEqual(self.loads('""'), u"")\r
- self.assertIsInstance(self.loads('""'), unicode)\r
-\r
- def test_object_pairs_hook(self):\r
- s = '{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}'\r
- p = [("xkd", 1), ("kcw", 2), ("art", 3), ("hxm", 4),\r
- ("qrt", 5), ("pad", 6), ("hoy", 7)]\r
- self.assertEqual(self.loads(s), eval(s))\r
- self.assertEqual(self.loads(s, object_pairs_hook=lambda x: x), p)\r
- self.assertEqual(self.json.load(StringIO(s),\r
- object_pairs_hook=lambda x: x), p)\r
- od = self.loads(s, object_pairs_hook=OrderedDict)\r
- self.assertEqual(od, OrderedDict(p))\r
- self.assertEqual(type(od), OrderedDict)\r
- # the object_pairs_hook takes priority over the object_hook\r
- self.assertEqual(self.loads(s, object_pairs_hook=OrderedDict,\r
- object_hook=lambda x: None),\r
- OrderedDict(p))\r
- # check that empty objects literals work (see #17368)\r
- self.assertEqual(self.loads('{}', object_pairs_hook=OrderedDict),\r
- OrderedDict())\r
- self.assertEqual(self.loads('{"empty": {}}',\r
- object_pairs_hook=OrderedDict),\r
- OrderedDict([('empty', OrderedDict())]))\r
-\r
- def test_extra_data(self):\r
- s = '[1, 2, 3]5'\r
- msg = 'Extra data'\r
- self.assertRaisesRegexp(ValueError, msg, self.loads, s)\r
-\r
- def test_invalid_escape(self):\r
- s = '["abc\\y"]'\r
- msg = 'escape'\r
- self.assertRaisesRegexp(ValueError, msg, self.loads, s)\r
-\r
- def test_negative_index(self):\r
- d = self.json.JSONDecoder()\r
- self.assertRaises(ValueError, d.raw_decode, 'a'*42, -50000)\r
- self.assertRaises(ValueError, d.raw_decode, u'a'*42, -50000)\r
-\r
-class TestPyDecode(TestDecode, PyTest): pass\r
-class TestCDecode(TestDecode, CTest): pass\r