Пример #1
0
    def check(self, name, file, inputCr):
        text = self.load(file, inputCr)
        shouldFail = name[0:4] == "fail"

        try:
            data = hjson.loads(text)
            self.assertFalse(shouldFail)

            text1 = hjson.dumpsJSON(data)
            hjson1 = hjson.dumps(data, ensure_ascii=False)
            result = hjson.loads(self.load(name + "_result.json", inputCr))
            text2 = hjson.dumpsJSON(result)
            hjson2 = self.load(name + "_result.hjson", False)

            if self.verma > 2 or self.vermi > 6:
                # final check fails on py2.6 because of string formatting issues
                self.assertEqual(text2, text1)
                self.assertEqual(hjson2, hjson1)

            # dbg
            # with open(name + "_dbg1.txt", "w") as tmp: tmp.write(hjson1.encode("utf-8"))
            # with open(name + "_dbg2.txt", "w") as tmp: tmp.write(hjson2.encode("utf-8"))

        except hjson.HjsonDecodeError as e:
            self.assertTrue(shouldFail)
Пример #2
0
 def test_tuple_array_dump(self):
     t = (1, 2, 3)
     expect = json.dumpsJSON(list(t))
     # Default is True
     sio = StringIO()
     json.dumpJSON(t, sio)
     self.assertEqual(expect, sio.getvalue())
     sio = StringIO()
     json.dumpJSON(t, sio, tuple_as_array=True)
     self.assertEqual(expect, sio.getvalue())
     self.assertRaises(TypeError, json.dumpJSON, t, StringIO(),
                       tuple_as_array=False)
     # Ensure that the "default" does not get called
     sio = StringIO()
     json.dumpJSON(t, sio, default=repr)
     self.assertEqual(expect, sio.getvalue())
     sio = StringIO()
     json.dumpJSON(t, sio, tuple_as_array=True, default=repr)
     self.assertEqual(expect, sio.getvalue())
     # Ensure that the "default" gets called
     sio = StringIO()
     json.dumpJSON(t, sio, tuple_as_array=False, default=repr)
     self.assertEqual(
         json.dumpsJSON(repr(t)),
         sio.getvalue())
 def test_ensure_ascii_still_works(self):
     # in the ascii range, ensure that everything is the same
     for c in map(unichr, range(0, 127)):
         self.assertEqual(json.dumpsJSON(c, ensure_ascii=False),
                          json.dumpsJSON(c))
     snowman = u'\N{SNOWMAN}'
     self.assertEqual(json.dumpsJSON(c, ensure_ascii=False), '"' + c + '"')
Пример #4
0
 def test_stringify_key(self):
     items = [(b('bytes'), 'bytes'), (1.0, '1.0'), (10, '10'),
              (True, 'true'), (False, 'false'), (None, 'null'),
              (long_type(100), '100')]
     for k, expect in items:
         self.assertEqual(json.loads(json.dumpsJSON({k: expect})),
                          {expect: expect})
         self.assertEqual(
             json.loads(json.dumpsJSON({k: expect}, sort_keys=True)),
             {expect: expect})
     self.assertRaises(TypeError, json.dumpsJSON, {json: 1})
     for v in [{}, {'other': 1}, {b('derp'): 1, 'herp': 2}]:
         for sort_keys in [False, True]:
             v0 = dict(v)
             v0[json] = 1
             v1 = dict((as_text_type(key), val) for (key, val) in v.items())
             self.assertEqual(
                 json.loads(
                     json.dumpsJSON(v0, skipkeys=True,
                                    sort_keys=sort_keys)), v1)
             self.assertEqual(
                 json.loads(
                     json.dumpsJSON({'': v0},
                                    skipkeys=True,
                                    sort_keys=sort_keys)), {'': v1})
             self.assertEqual(
                 json.loads(
                     json.dumpsJSON([v0],
                                    skipkeys=True,
                                    sort_keys=sort_keys)), [v1])
Пример #5
0
    def check(self, name, file, inputCr):
        text = self.load(file, inputCr)
        shouldFail = name[0:4] == "fail"

        try:
            data = hjson.loads(text)
            self.assertFalse(shouldFail)

            text1 = hjson.dumpsJSON(data)
            hjson1 = hjson.dumps(data, ensure_ascii=False);
            result = hjson.loads(self.load(name + "_result.json", inputCr))
            text2 = hjson.dumpsJSON(result)
            hjson2 = self.load(name + "_result.hjson", False)

            if self.verma>2 or self.vermi>6:
                # final check fails on py2.6 because of string formatting issues
                self.assertEqual(text2, text1)
                self.assertEqual(hjson2, hjson1)

            # dbg
            # with open(name + "_dbg1.txt", "w") as tmp: tmp.write(hjson1.encode("utf-8"))
            # with open(name + "_dbg2.txt", "w") as tmp: tmp.write(hjson2.encode("utf-8"))


        except hjson.HjsonDecodeError as e:
            self.assertTrue(shouldFail)
 def assertRoundTrip(self, obj, other, for_json=True):
     if for_json is None:
         # None will use the default
         s = json.dumpsJSON(obj)
     else:
         s = json.dumpsJSON(obj, for_json=for_json)
     self.assertEqual(json.loads(s), other)
Пример #7
0
 def test_asdict_not_callable_dumps(self):
     for f in CONSTRUCTORS:
         self.assertRaises(TypeError,
             json.dumpsJSON, f(DeadDuck()), namedtuple_as_object=True)
         self.assertEqual(
             json.dumpsJSON(f({})),
             json.dumpsJSON(f(DeadDict()), namedtuple_as_object=True))
 def test_ints(self):
     for val, expect in self.values:
         self.assertEqual(val, json.loads(json.dumpsJSON(val)))
         self.assertEqual(
             expect,
             json.loads(json.dumpsJSON(val, int_as_string_bitcount=31)),
         )
Пример #9
0
 def test_lists(self):
     for opts in self.options:
         for val, expect in self.values:
             val = [val, val]
             expect = [expect, expect]
             self.assertEqual(val, json.loads(json.dumpsJSON(val)))
             self.assertEqual(expect, json.loads(json.dumpsJSON(val, **opts)))
Пример #10
0
 def test_dicts(self):
     for opts in self.options:
         for val, expect in self.values:
             val = {"k": val}
             expect = {"k": expect}
             self.assertEqual(val, json.loads(json.dumpsJSON(val)))
             self.assertEqual(expect, json.loads(json.dumpsJSON(val, **opts)))
Пример #11
0
    def check(self, name, file, inputCr):
        text = self.load(file, inputCr)
        shouldFail = name[0:4] == "fail"

        try:
            data = hjson.loads(text)
            self.assertFalse(shouldFail, file)

            text1 = hjson.dumpsJSON(data)
            hjson1 = hjson.dumps(data, ensure_ascii=False);
            result = hjson.loads(self.load(name + "_result.json", inputCr))
            text2 = hjson.dumpsJSON(result)
            hjson2 = self.load(name + "_result.hjson", False)

            # dbg
            # with open(name + "_dbg1.txt", "w") as tmp: tmp.write(hjson1.encode("utf-8"))
            # with open(name + "_dbg2.txt", "w") as tmp: tmp.write(hjson2.encode("utf-8"))
            # with codecs.open(name + "_dbg3.txt", 'w', 'utf-8') as tmp: hjson.dump(data, tmp)

            if self.verma>2 or self.vermi>6:
                # final check fails on py2.6 because of string formatting issues
                self.assertEqual(text2, text1, file)
                self.assertEqual(hjson2, hjson1, file)

        except hjson.HjsonDecodeError as e:
            if not shouldFail:
                self.fail("raised error on parsing %s: %r" % (file, e))
Пример #12
0
 def test_floats(self):
     for num in [
             1617161771.7650001, math.pi, math.pi**100, math.pi**-100, 3.1
     ]:
         self.assertEqual(float(json.dumpsJSON(num)), num)
         self.assertEqual(json.loads(json.dumpsJSON(num)), num)
         self.assertEqual(json.loads(text_type(json.dumpsJSON(num))), num)
Пример #13
0
 def test_dict_keys(self):
     for opts in self.options:
         for val, _ in self.values:
             expect = {str(val): "value"}
             val = {val: "value"}
             self.assertEqual(expect, json.loads(json.dumpsJSON(val)))
             self.assertEqual(expect, json.loads(json.dumpsJSON(val, **opts)))
Пример #14
0
 def test_stringify_key(self):
     items = [(b('bytes'), 'bytes'),
              (1.0, '1.0'),
              (10, '10'),
              (True, 'true'),
              (False, 'false'),
              (None, 'null'),
              (long_type(100), '100')]
     for k, expect in items:
         self.assertEqual(
             json.loads(json.dumpsJSON({k: expect})),
             {expect: expect})
         self.assertEqual(
             json.loads(json.dumpsJSON({k: expect}, sort_keys=True)),
             {expect: expect})
     self.assertRaises(TypeError, json.dumpsJSON, {json: 1})
     for v in [{}, {'other': 1}, {b('derp'): 1, 'herp': 2}]:
         for sort_keys in [False, True]:
             v0 = dict(v)
             v0[json] = 1
             v1 = dict((as_text_type(key), val) for (key, val) in v.items())
             self.assertEqual(
                 json.loads(json.dumpsJSON(v0, skipkeys=True, sort_keys=sort_keys)),
                 v1)
             self.assertEqual(
                 json.loads(json.dumpsJSON({'': v0}, skipkeys=True, sort_keys=sort_keys)),
                 {'': v1})
             self.assertEqual(
                 json.loads(json.dumpsJSON([v0], skipkeys=True, sort_keys=sort_keys)),
                 [v1])
    def test_separators(self):
        h = [['blorpie'], ['whoops'], [], 'd-shtaeou', 'd-nthiouh', 'i-vhbjkhnth',
             {'nifty': 87}, {'field': 'yes', 'morefield': False} ]

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


        d1 = json.dumpsJSON(h)
        d2 = json.dumpsJSON(h, indent='  ', sort_keys=True, separators=(' ,', ' : '))

        h1 = json.loads(d1)
        h2 = json.loads(d2)

        self.assertEqual(h1, h)
        self.assertEqual(h2, h)
        self.assertEqual(d2, expect)
Пример #16
0
 def test_tuple_array_dump(self):
     t = (1, 2, 3)
     expect = json.dumpsJSON(list(t))
     # Default is True
     sio = StringIO()
     json.dumpJSON(t, sio)
     self.assertEqual(expect, sio.getvalue())
     sio = StringIO()
     json.dumpJSON(t, sio, tuple_as_array=True)
     self.assertEqual(expect, sio.getvalue())
     self.assertRaises(TypeError,
                       json.dumpJSON,
                       t,
                       StringIO(),
                       tuple_as_array=False)
     # Ensure that the "default" does not get called
     sio = StringIO()
     json.dumpJSON(t, sio, default=repr)
     self.assertEqual(expect, sio.getvalue())
     sio = StringIO()
     json.dumpJSON(t, sio, tuple_as_array=True, default=repr)
     self.assertEqual(expect, sio.getvalue())
     # Ensure that the "default" gets called
     sio = StringIO()
     json.dumpJSON(t, sio, tuple_as_array=False, default=repr)
     self.assertEqual(json.dumpsJSON(repr(t)), sio.getvalue())
Пример #17
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 = json.dumpsJSON(h)
        d2 = json.dumpsJSON(h,
                            indent='\t',
                            sort_keys=True,
                            separators=(',', ': '))
        d3 = json.dumpsJSON(h,
                            indent='  ',
                            sort_keys=True,
                            separators=(',', ': '))
        d4 = json.dumpsJSON(h,
                            indent=2,
                            sort_keys=True,
                            separators=(',', ': '))

        h1 = json.loads(d1)
        h2 = json.loads(d2)
        h3 = json.loads(d3)
        h4 = json.loads(d4)

        self.assertEqual(h1, h)
        self.assertEqual(h2, h)
        self.assertEqual(h3, h)
        self.assertEqual(h4, h)
        self.assertEqual(d3, expect.replace('\t', '  '))
        self.assertEqual(d4, expect.replace('\t', '  '))
        # NOTE: Python 2.4 textwrap.dedent converts tabs to spaces,
        #       so the following is expected to fail. Python 2.4 is not a
        #       supported platform in hjson 2.1.0+.
        self.assertEqual(d2, expect)
 def test_lists(self):
     for val, expect in self.values:
         val = [val, val]
         expect = [expect, expect]
         self.assertEqual(val, json.loads(json.dumpsJSON(val)))
         self.assertEqual(
             expect, json.loads(json.dumpsJSON(val, int_as_string_bitcount=31))
         )
 def test_dicts(self):
     for val, expect in self.values:
         val = {"k": val}
         expect = {"k": expect}
         self.assertEqual(val, json.loads(json.dumpsJSON(val)))
         self.assertEqual(
             expect, json.loads(json.dumpsJSON(val, int_as_string_bitcount=31))
         )
 def test_case(self):
     a = {'a': 1, 'c': 5, 'Jack': 'jill', 'pick': 'axe', 'Array': [1, 5, 6, 9], 'tuple': (83, 12, 3), 'crate': 'dog', 'zeak': 'oh'}
     self.assertEqual(
         '{"Array": [1, 5, 6, 9], "Jack": "jill", "a": 1, "c": 5, "crate": "dog", "pick": "axe", "tuple": [83, 12, 3], "zeak": "oh"}',
         json.dumpsJSON(a, item_sort_key=itemgetter(0)))
     self.assertEqual(
         '{"a": 1, "Array": [1, 5, 6, 9], "c": 5, "crate": "dog", "Jack": "jill", "pick": "axe", "tuple": [83, 12, 3], "zeak": "oh"}',
         json.dumpsJSON(a, item_sort_key=lambda kv: kv[0].lower()))
 def test_dict_keys(self):
     for val, _ in self.values:
         expect = {str(val): "value"}
         val = {val: "value"}
         self.assertEqual(expect, json.loads(json.dumpsJSON(val)))
         self.assertEqual(
             expect, json.loads(json.dumpsJSON(val, int_as_string_bitcount=31))
         )
 def assertRoundTrip(self, obj, other, for_json=True):
     if for_json is None:
         # None will use the default
         s = json.dumpsJSON(obj)
     else:
         s = json.dumpsJSON(obj, for_json=for_json)
     self.assertEqual(
         json.loads(s),
         other)
 def test_ensure_ascii_linebreak_encoding(self):
     # http://timelessrepo.com/json-isnt-a-javascript-subset
     s1 = u'\u2029\u2028'
     s2 = s1.encode('utf8')
     expect = '"\\u2029\\u2028"'
     self.assertEqual(json.dumpsJSON(s1), expect)
     self.assertEqual(json.dumpsJSON(s2), expect)
     self.assertEqual(json.dumpsJSON(s1, ensure_ascii=False), expect)
     self.assertEqual(json.dumpsJSON(s2, ensure_ascii=False), expect)
Пример #24
0
 def test_ints(self):
     for opts in self.options:
         for val, expect in self.values:
             self.assertEqual(
                 val,
                 json.loads(json.dumpsJSON(val)))
             self.assertEqual(
                 expect,
                 json.loads(json.dumpsJSON(val, **opts)))
 def test_asdict_not_callable_dumps(self):
     for f in CONSTRUCTORS:
         self.assertRaises(TypeError,
                           json.dumpsJSON,
                           f(DeadDuck()),
                           namedtuple_as_object=True)
         self.assertEqual(
             json.dumpsJSON(f({})),
             json.dumpsJSON(f(DeadDict()), namedtuple_as_object=True))
 def test_ints(self):
     for val, expect in self.values:
         self.assertEqual(
             val,
             json.loads(json.dumpsJSON(val)))
         self.assertEqual(
             expect,
             json.loads(json.dumpsJSON(val, int_as_string_bitcount=31)),
             )
Пример #27
0
 def test_ensure_ascii_linebreak_encoding(self):
     # http://timelessrepo.com/json-isnt-a-javascript-subset
     s1 = u"\u2029\u2028"
     s2 = s1.encode("utf8")
     expect = '"\\u2029\\u2028"'
     self.assertEqual(json.dumpsJSON(s1), expect)
     self.assertEqual(json.dumpsJSON(s2), expect)
     self.assertEqual(json.dumpsJSON(s1, ensure_ascii=False), expect)
     self.assertEqual(json.dumpsJSON(s2, ensure_ascii=False), expect)
Пример #28
0
 def template(self, type: str, only_required: bool, output: str) -> Optional[Dict]:
     schema = self._template(type, only_required)
     if output == "hjson":
         print(hjson.dumps(schema, indent=4, item_sort_key=sort_attrs))
     elif output == "json":
         print(hjson.dumpsJSON(schema, indent=4, item_sort_key=sort_attrs))
     elif output == "dict":
         return json.loads(hjson.dumpsJSON(schema, item_sort_key=sort_attrs))
     else:
         raise ValueError("unrecognized output")
Пример #29
0
 def test_ensure_ascii_false_bytestring_encoding(self):
     # http://code.google.com/p/simplejson/issues/detail?id=48
     doc1 = {u"quux": b("Arr\xc3\xaat sur images")}
     doc2 = {u"quux": u("Arr\xeat sur images")}
     doc_ascii = '{"quux": "Arr\\u00eat sur images"}'
     doc_unicode = u'{"quux": "Arr\xeat sur images"}'
     self.assertEqual(json.dumpsJSON(doc1), doc_ascii)
     self.assertEqual(json.dumpsJSON(doc2), doc_ascii)
     self.assertEqual(json.dumpsJSON(doc1, ensure_ascii=False), doc_unicode)
     self.assertEqual(json.dumpsJSON(doc2, ensure_ascii=False), doc_unicode)
Пример #30
0
def _as_json(resource: Resource, store_metadata: bool) -> Dict:
    data = json.loads(
        hjson.dumpsJSON(resource, default=encode, item_sort_key=sort_attrs))
    _remove_context(data)
    if store_metadata is True and resource._store_metadata:
        data.update(
            json.loads(
                hjson.dumpsJSON(resource._store_metadata,
                                item_sort_key=sort_attrs)))
    return data
 def test_dict_keys(self):
     for val, _ in self.values:
         expect = {str(val): 'value'}
         val = {val: 'value'}
         self.assertEqual(
             expect,
             json.loads(json.dumpsJSON(val)))
         self.assertEqual(
             expect,
             json.loads(json.dumpsJSON(val, int_as_string_bitcount=31)))
 def test_ensure_ascii_false_bytestring_encoding(self):
     # http://code.google.com/p/simplejson/issues/detail?id=48
     doc1 = {u'quux': b('Arr\xc3\xaat sur images')}
     doc2 = {u'quux': u('Arr\xeat sur images')}
     doc_ascii = '{"quux": "Arr\\u00eat sur images"}'
     doc_unicode = u'{"quux": "Arr\xeat sur images"}'
     self.assertEqual(json.dumpsJSON(doc1), doc_ascii)
     self.assertEqual(json.dumpsJSON(doc2), doc_ascii)
     self.assertEqual(json.dumpsJSON(doc1, ensure_ascii=False), doc_unicode)
     self.assertEqual(json.dumpsJSON(doc2, ensure_ascii=False), doc_unicode)
 def test_lists(self):
     for val, expect in self.values:
         val = [val, val]
         expect = [expect, expect]
         self.assertEqual(
             val,
             json.loads(json.dumpsJSON(val)))
         self.assertEqual(
             expect,
             json.loads(json.dumpsJSON(val, int_as_string_bitcount=31)))
 def test_ensure_ascii_still_works(self):
     # in the ascii range, ensure that everything is the same
     for c in map(unichr, range(0, 127)):
         self.assertEqual(
             json.dumpsJSON(c, ensure_ascii=False),
             json.dumpsJSON(c))
     snowman = u'\N{SNOWMAN}'
     self.assertEqual(
         json.dumpsJSON(c, ensure_ascii=False),
         '"' + c + '"')
 def test_dicts(self):
     for val, expect in self.values:
         val = {'k': val}
         expect = {'k': expect}
         self.assertEqual(
             val,
             json.loads(json.dumpsJSON(val)))
         self.assertEqual(
             expect,
             json.loads(json.dumpsJSON(val, int_as_string_bitcount=31)))
Пример #36
0
 def test_ensure_ascii_false_returns_unicode(self):
     # http://code.google.com/p/simplejson/issues/detail?id=48
     self.assertEqual(type(json.dumpsJSON([], ensure_ascii=False)),
                      text_type)
     self.assertEqual(type(json.dumpsJSON(0, ensure_ascii=False)),
                      text_type)
     self.assertEqual(type(json.dumpsJSON({}, ensure_ascii=False)),
                      text_type)
     self.assertEqual(type(json.dumpsJSON("", ensure_ascii=False)),
                      text_type)
Пример #37
0
 def test_dicts(self):
     for opts in self.options:
         for val, expect in self.values:
             val = {'k': val}
             expect = {'k': expect}
             self.assertEqual(
                 val,
                 json.loads(json.dumpsJSON(val)))
             self.assertEqual(
                 expect,
                 json.loads(json.dumpsJSON(val, **opts)))
Пример #38
0
 def test_lists(self):
     for opts in self.options:
         for val, expect in self.values:
             val = [val, val]
             expect = [expect, expect]
             self.assertEqual(
                 val,
                 json.loads(json.dumpsJSON(val)))
             self.assertEqual(
                 expect,
                 json.loads(json.dumpsJSON(val, **opts)))
Пример #39
0
 def test_dict_keys(self):
     for opts in self.options:
         for val, _ in self.values:
             expect = {str(val): 'value'}
             val = {val: 'value'}
             self.assertEqual(
                 expect,
                 json.loads(json.dumpsJSON(val)))
             self.assertEqual(
                 expect,
                 json.loads(json.dumpsJSON(val, **opts)))
Пример #40
0
 def test_namedtuple_dumps(self):
     for v in [Value(1), Point(1, 2), DuckValue(1), DuckPoint(1, 2)]:
         d = v._asdict()
         self.assertEqual(d, json.loads(json.dumpsJSON(v)))
         self.assertEqual(
             d,
             json.loads(json.dumpsJSON(v, namedtuple_as_object=True)))
         self.assertEqual(d, json.loads(json.dumpsJSON(v, tuple_as_array=False)))
         self.assertEqual(
             d,
             json.loads(json.dumpsJSON(v, namedtuple_as_object=True,
                                   tuple_as_array=False)))
 def test_dictrecursion(self):
     x = {}
     x["test"] = x
     try:
         json.dumpsJSON(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.dumpsJSON(y)
Пример #42
0
 def test_encode_truefalse(self):
     self.assertEqual(json.dumpsJSON(
              {True: False, False: True}, sort_keys=True),
              '{"false": true, "true": false}')
     self.assertEqual(
         json.dumpsJSON(
             {2: 3.0,
              4.0: long_type(5),
              False: 1,
              long_type(6): True,
              "7": 0},
             sort_keys=True),
         '{"2": 3.0, "4.0": 5, "6": true, "7": 0, "false": 1}')
Пример #43
0
 def test_separators(self):
     lst = [1, 2, 3, 4]
     expect = '[\n1,\n2,\n3,\n4\n]'
     expect_spaces = '[\n1, \n2, \n3, \n4\n]'
     # Ensure that separators still works
     self.assertEqual(
         expect_spaces,
         json.dumpsJSON(lst, indent=0, separators=(', ', ': ')))
     # Force the new defaults
     self.assertEqual(expect,
                      json.dumpsJSON(lst, indent=0, separators=(',', ': ')))
     # Added in 2.1.4
     self.assertEqual(expect, json.dumpsJSON(lst, indent=0))
Пример #44
0
 def test_dictrecursion(self):
     x = {}
     x["test"] = x
     try:
         json.dumpsJSON(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.dumpsJSON(y)
 def test_namedtuple_dumps(self):
     for v in [Value(1), Point(1, 2), DuckValue(1), DuckPoint(1, 2)]:
         d = v._asdict()
         self.assertEqual(d, json.loads(json.dumpsJSON(v)))
         self.assertEqual(
             d, json.loads(json.dumpsJSON(v, namedtuple_as_object=True)))
         self.assertEqual(
             d, json.loads(json.dumpsJSON(v, tuple_as_array=False)))
         self.assertEqual(
             d,
             json.loads(
                 json.dumpsJSON(v,
                                namedtuple_as_object=True,
                                tuple_as_array=False)))
Пример #46
0
    def test_separators(self):
        h = [
            ["blorpie"],
            ["whoops"],
            [],
            "d-shtaeou",
            "d-nthiouh",
            "i-vhbjkhnth",
            {
                "nifty": 87
            },
            {
                "field": "yes",
                "morefield": False
            },
        ]

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

        d1 = json.dumpsJSON(h)
        d2 = json.dumpsJSON(h,
                            indent="  ",
                            sort_keys=True,
                            separators=(" ,", " : "))

        h1 = json.loads(d1)
        h2 = json.loads(d2)

        self.assertEqual(h1, h)
        self.assertEqual(h2, h)
        self.assertEqual(d2, expect)
 def test_decimal_defaults(self):
     d = Decimal('1.1')
     # use_decimal=True is the default
     self.assertRaises(TypeError, json.dumpsJSON, d, use_decimal=False)
     self.assertEqual('1.1', json.dumpsJSON(d))
     self.assertEqual('1.1', json.dumpsJSON(d, use_decimal=True))
     self.assertRaises(TypeError, json.dumpJSON, d, StringIO(),
                       use_decimal=False)
     sio = StringIO()
     json.dumpJSON(d, sio)
     self.assertEqual('1.1', sio.getvalue())
     sio = StringIO()
     json.dumpJSON(d, sio, use_decimal=True)
     self.assertEqual('1.1', sio.getvalue())
Пример #48
0
def dumps(obj, human=False, **kw):
    if 'cls' not in kw:
        kw['cls'] = HJSEncoder
    if human:
        return hjson.dumps(obj, **kw)
    else:
        return hjson.dumpsJSON(obj, **kw)
Пример #49
0
 def test_ordered_dict(self):
     # http://bugs.python.org/issue6105
     items = [('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5)]
     s = json.dumpsJSON(json.OrderedDict(items))
     self.assertEqual(
         s,
         '{"one": 1, "two": 2, "three": 3, "four": 4, "five": 5}')
Пример #50
0
        def check(indent, expected):
            d1 = json.dumpsJSON(h, indent=indent)
            self.assertEqual(d1, expected)

            sio = StringIO()
            json.dumpJSON(h, sio, indent=indent)
            self.assertEqual(sio.getvalue(), expected)
Пример #51
0
        def check(indent, expected):
            d1 = json.dumpsJSON(h, indent=indent)
            self.assertEqual(d1, expected)

            sio = StringIO()
            json.dumpJSON(h, sio, indent=indent)
            self.assertEqual(sio.getvalue(), expected)
Пример #52
0
 def test_ordered_dict(self):
     # http://bugs.python.org/issue6105
     items = [('one', 1), ('two', 2), ('three', 3), ('four', 4),
              ('five', 5)]
     s = json.dumpsJSON(json.OrderedDict(items))
     self.assertEqual(
         s, '{"one": 1, "two": 2, "three": 3, "four": 4, "five": 5}')
Пример #53
0
 def test_ordered_dict(self):
     # http://bugs.python.org/issue6105
     items = [("one", 1), ("two", 2), ("three", 3), ("four", 4),
              ("five", 5)]
     s = json.dumpsJSON(OrderedDict(items))
     self.assertEqual(
         s, '{"one": 1, "two": 2, "three": 3, "four": 4, "five": 5}')
Пример #54
0
 def test_separators(self):
     lst = [1,2,3,4]
     expect = '[\n1,\n2,\n3,\n4\n]'
     expect_spaces = '[\n1, \n2, \n3, \n4\n]'
     # Ensure that separators still works
     self.assertEqual(
         expect_spaces,
         json.dumpsJSON(lst, indent=0, separators=(', ', ': ')))
     # Force the new defaults
     self.assertEqual(
         expect,
         json.dumpsJSON(lst, indent=0, separators=(',', ': ')))
     # Added in 2.1.4
     self.assertEqual(
         expect,
         json.dumpsJSON(lst, indent=0))
Пример #55
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 = json.dumpsJSON(h)
        d2 = json.dumpsJSON(h, indent='\t', sort_keys=True, separators=(',', ': '))
        d3 = json.dumpsJSON(h, indent='  ', sort_keys=True, separators=(',', ': '))
        d4 = json.dumpsJSON(h, indent=2, sort_keys=True, separators=(',', ': '))

        h1 = json.loads(d1)
        h2 = json.loads(d2)
        h3 = json.loads(d3)
        h4 = json.loads(d4)

        self.assertEqual(h1, h)
        self.assertEqual(h2, h)
        self.assertEqual(h3, h)
        self.assertEqual(h4, h)
        self.assertEqual(d3, expect.replace('\t', '  '))
        self.assertEqual(d4, expect.replace('\t', '  '))
        # NOTE: Python 2.4 textwrap.dedent converts tabs to spaces,
        #       so the following is expected to fail. Python 2.4 is not a
        #       supported platform in hjson 2.1.0+.
        self.assertEqual(d2, expect)
Пример #56
0
 def test_namedtuple_dumps_false(self):
     for v in [Value(1), Point(1, 2)]:
         l = list(v)
         self.assertEqual(
             l,
             json.loads(json.dumpsJSON(v, namedtuple_as_object=False)))
         self.assertRaises(TypeError, json.dumpsJSON, v,
             tuple_as_array=False, namedtuple_as_object=False)
Пример #57
0
 def test_sort_keys(self):
     # https://github.com/simplejson/simplejson/issues/106
     for num_keys in range(2, 32):
         p = dict((str(x), x) for x in range(num_keys))
         sio = StringIO()
         json.dumpJSON(p, sio, sort_keys=True)
         self.assertEqual(sio.getvalue(), json.dumpsJSON(p, sort_keys=True))
         self.assertEqual(json.loads(sio.getvalue()), p)
 def test_decimal_defaults(self):
     d = Decimal('1.1')
     # use_decimal=True is the default
     self.assertRaises(TypeError, json.dumpsJSON, d, use_decimal=False)
     self.assertEqual('1.1', json.dumpsJSON(d))
     self.assertEqual('1.1', json.dumpsJSON(d, use_decimal=True))
     self.assertRaises(TypeError,
                       json.dumpJSON,
                       d,
                       StringIO(),
                       use_decimal=False)
     sio = StringIO()
     json.dumpJSON(d, sio)
     self.assertEqual('1.1', sio.getvalue())
     sio = StringIO()
     json.dumpJSON(d, sio, use_decimal=True)
     self.assertEqual('1.1', sio.getvalue())
Пример #59
0
 def test_asdict_not_callable_dump(self):
     for f in CONSTRUCTORS:
         self.assertRaises(TypeError,
             json.dumpJSON, f(DeadDuck()), StringIO(), namedtuple_as_object=True)
         sio = StringIO()
         json.dumpJSON(f(DeadDict()), sio, namedtuple_as_object=True)
         self.assertEqual(
             json.dumpsJSON(f({})),
             sio.getvalue())