Beispiel #1
0
 def test_encode_truefalse(self):
     self.assertEqual(JSONModule.dumps(
              {True: False, False: True}, sort_keys=True),
              '{"false": true, "true": false}')
     self.assertEqual(JSONModule.dumps(
             {2: 3.0, 4.0: 5, False: 1, 6: True}, sort_keys=True),
             '{"false": 1, "2": 3.0, "4.0": 5, "6": true}')
 def test_parse(self):
     # test in/out equivalence and parsing
     res = json.loads(JSON)
     out = json.dumps(res)
     self.assertEqual(res, json.loads(out))
     try:
         json.dumps(res, allow_nan=False)
     except ValueError:
         pass
     else:
         self.fail("23456789012E666 should be out of range")
Beispiel #3
0
 def test_parse(self):
     # test in/out equivalence and parsing
     res = json.loads(JSON)
     out = json.dumps(res)
     self.assertEqual(res, json.loads(out))
     try:
         json.dumps(res, allow_nan=False)
     except ValueError:
         pass
     else:
         self.fail("23456789012E666 should be out of range")
 def test_failures(self):
     for idx, doc in enumerate(JSONDOCS):
         idx = idx + 1
         if idx in SKIPS:
             json.loads(doc)
             continue
         try:
             json.loads(doc)
         except ValueError:
             pass
         else:
             self.fail("Expected failure for fail{0}.json: {1!r}".format(idx, doc))
Beispiel #5
0
 def test_dictrecursion(self):
     x = {}
     x["test"] = x
     try:
         json.dumps(x)
     except ValueError:
         pass
     else:
         self.fail("didn't raise ValueError on dict recursion")
     x = {}
     y = {"a": x, "b": x}
     # ensure that the marker is cleared
     json.dumps(x)
 def test_dictrecursion(self):
     x = {}
     x["test"] = x
     try:
         json.dumps(x)
     except ValueError:
         pass
     else:
         self.fail("didn't raise ValueError on dict recursion")
     x = {}
     y = {"a": x, "b": x}
     # ensure that the marker is cleared
     json.dumps(x)
Beispiel #7
0
 def test_failures(self):
     for idx, doc in enumerate(JSONDOCS):
         idx = idx + 1
         if idx in SKIPS:
             json.loads(doc)
             continue
         try:
             json.loads(doc)
         except ValueError:
             pass
         else:
             self.fail("Expected failure for fail{0}.json: {1!r}".format(
                 idx, doc))
Beispiel #8
0
 def test_ordered_dict(self):
     # See issue 6105
     items = [('one', 1), ('two', 2), ('three', 3), ('four', 4),
              ('five', 5)]
     s = JSONModule.dumps(OrderedDict(items))
     self.assertEqual(
         s, '{"one": 1, "two": 2, "three": 3, "four": 4, "five": 5}')
 def test_object_pairs_hook(self):
     s = '{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}'
     p = [("xkd", 1), ("kcw", 2), ("art", 3), ("hxm", 4),
          ("qrt", 5), ("pad", 6), ("hoy", 7)]
     self.assertEqual(JSONModule.loads(s), eval(s))
     self.assertEqual(JSONModule.loads(s, object_pairs_hook = lambda x: x), p)
     self.assertEqual(JSONModule.load(StringIO(s),
                                object_pairs_hook=lambda x: x), p)
     od = JSONModule.loads(s, object_pairs_hook = OrderedDict)
     self.assertEqual(od, OrderedDict(p))
     self.assertEqual(type(od), OrderedDict)
     # the object_pairs_hook takes priority over the object_hook
     self.assertEqual(JSONModule.loads(s,
                                 object_pairs_hook = OrderedDict,
                                 object_hook = lambda x: None),
                      OrderedDict(p))
Beispiel #10
0
 def test_object_pairs_hook(self):
     s = '{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}'
     p = [("xkd", 1), ("kcw", 2), ("art", 3), ("hxm", 4), ("qrt", 5),
          ("pad", 6), ("hoy", 7)]
     self.assertEqual(JSONModule.loads(s), eval(s))
     self.assertEqual(JSONModule.loads(s, object_pairs_hook=lambda x: x), p)
     self.assertEqual(
         JSONModule.load(StringIO(s), object_pairs_hook=lambda x: x), p)
     od = JSONModule.loads(s, object_pairs_hook=OrderedDict)
     self.assertEqual(od, OrderedDict(p))
     self.assertEqual(type(od), OrderedDict)
     # the object_pairs_hook takes priority over the object_hook
     self.assertEqual(
         JSONModule.loads(s,
                          object_pairs_hook=OrderedDict,
                          object_hook=lambda x: None), OrderedDict(p))
Beispiel #11
0
    def test_indent(self):
        h = [['blorpie'], ['whoops'], [], 'd-shtaeou', 'd-nthiouh', 'i-vhbjkhnth',
             {'nifty': 87}, {'field': 'yes', 'morefield': False} ]

        expect = textwrap.dedent("""\
        [
        \t[
        \t\t"blorpie"
        \t],
        \t[
        \t\t"whoops"
        \t],
        \t[],
        \t"d-shtaeou",
        \t"d-nthiouh",
        \t"i-vhbjkhnth",
        \t{
        \t\t"nifty": 87
        \t},
        \t{
        \t\t"field": "yes",
        \t\t"morefield": false
        \t}
        ]""")


        d1 = JSONModule.dumps(h)
        d2 = JSONModule.dumps(h, indent=2, sort_keys=True, separators=(',', ': '))
        d3 = JSONModule.dumps(h, indent='\t', sort_keys=True, separators=(',', ': '))

        h1 = JSONModule.loads(d1)
        h2 = JSONModule.loads(d2)
        h3 = JSONModule.loads(d3)

        self.assertEqual(h1, h)
        self.assertEqual(h2, h)
        self.assertEqual(h3, h)
        self.assertEqual(d2, expect.expandtabs(2))
        self.assertEqual(d3, expect)
 def test_listrecursion(self):
     x = []
     x.append(x)
     try:
         json.dumps(x)
     except ValueError:
         pass
     else:
         self.fail("didn't raise ValueError on list recursion")
     x = []
     y = [x]
     x.append(y)
     try:
         json.dumps(x)
     except ValueError:
         pass
     else:
         self.fail("didn't raise ValueError on alternating list recursion")
     y = []
     x = [y, y]
     # ensure that the marker is cleared
     json.dumps(x)
Beispiel #13
0
 def test_listrecursion(self):
     x = []
     x.append(x)
     try:
         json.dumps(x)
     except ValueError:
         pass
     else:
         self.fail("didn't raise ValueError on list recursion")
     x = []
     y = [x]
     x.append(y)
     try:
         json.dumps(x)
     except ValueError:
         pass
     else:
         self.fail("didn't raise ValueError on alternating list recursion")
     y = []
     x = [y, y]
     # ensure that the marker is cleared
     json.dumps(x)
 def test_parse(self):
     # test in/out equivalence and parsing
     res = json.loads(JSON)
     out = json.dumps(res)
     self.assertEqual(res, json.loads(out))
Beispiel #15
0
 def test_floats(self):
     for num in [
             1617161771.7650001, math.pi, math.pi**100, math.pi**-100, 3.1
     ]:
         self.assertEqual(float(json.dumps(num)), num)
         self.assertEqual(json.loads(json.dumps(num)), num)
Beispiel #16
0
 def test_ints(self):
     for num in [1, 1 << 32, 1 << 64]:
         self.assertEqual(json.dumps(num), str(num))
         self.assertEqual(int(json.dumps(num)), num)
 def test_ordered_dict(self):
     # See issue 6105
     items = [('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5)]
     s = JSONModule.dumps(OrderedDict(items))
     self.assertEqual(s, '{"one": 1, "two": 2, "three": 3, "four": 4, "five": 5}')
Beispiel #18
0
 def test_dumps(self):
     self.assertEqual(JSONModule.dumps({}), '{}')
 def test_float(self):
     rval = JSONModule.loads('1', parse_int=float)
     self.assertTrue(isinstance(rval, float))
     self.assertEqual(rval, 1.0)
Beispiel #20
0
 def test_default(self):
     self.assertEqual(
         JSONModule.dumps(type, default=repr),
         JSONModule.dumps(repr(type)))
Beispiel #21
0
 def test_sorted_dict(self):
     items = [('one', 1), ('two', 2), ('three', 3), ('four', 4),
              ('five', 5)]
     s = JSONModule.dumps(dict(items), sort_keys=True)
     self.assertEqual(
         s, '{"five": 5, "four": 4, "one": 1, "three": 3, "two": 2}')
 def test_sorted_dict(self):
     items = [('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5)]
     s = JSONModule.dumps(dict(items), sort_keys=True)
     self.assertEqual(s, '{"five": 5, "four": 4, "one": 1, "three": 3, "two": 2}')
Beispiel #23
0
 def test_decimal(self):
     rval = JSONModule.loads('1.1', parse_float=decimal.Decimal)
     self.assertTrue(isinstance(rval, decimal.Decimal))
     self.assertEqual(rval, decimal.Decimal('1.1'))
Beispiel #24
0
 def test_dump(self):
     sio = StringIO()
     JSONModule.dump({}, sio)
     self.assertEqual(sio.getvalue(), '{}')
Beispiel #25
0
 def test_float(self):
     rval = JSONModule.loads('1', parse_int=float)
     self.assertTrue(isinstance(rval, float))
     self.assertEqual(rval, 1.0)
 def test_default(self):
     self.assertEqual(JSONModule.dumps(type, default=repr), JSONModule.dumps(repr(type)))
Beispiel #27
0
 def test_decoder_optimizations(self):
     # Several optimizations were made that skip over calls to
     # the whitespace regex, so this test is designed to try and
     # exercise the uncommon cases. The array cases are already covered.
     rval = JSONModule.loads('{   "key"    :    "value"    ,  "k":"v"    }')
     self.assertEqual(rval, {"key": "value", "k": "v"})
 def test_decoder_optimizations(self):
     # Several optimizations were made that skip over calls to
     # the whitespace regex, so this test is designed to try and
     # exercise the uncommon cases. The array cases are already covered.
     rval = JSONModule.loads('{   "key"    :    "value"    ,  "k":"v"    }')
     self.assertEqual(rval, {"key":"value", "k":"v"})
 def test_ints(self):
     for num in [1, 1<<32, 1<<64]:
         self.assertEqual(json.dumps(num), str(num))
         self.assertEqual(int(json.dumps(num)), num)
Beispiel #30
0
 def test_parse(self):
     # test in/out equivalence and parsing
     res = json.loads(JSON)
     out = json.dumps(res)
     self.assertEqual(res, json.loads(out))
 def test_decimal(self):
     rval = JSONModule.loads('1.1', parse_float=decimal.Decimal)
     self.assertTrue(isinstance(rval, decimal.Decimal))
     self.assertEqual(rval, decimal.Decimal('1.1'))
 def test_floats(self):
     for num in [1617161771.7650001, math.pi, math.pi**100, math.pi**-100, 3.1]:
         self.assertEqual(float(json.dumps(num)), num)
         self.assertEqual(json.loads(json.dumps(num)), num)