Exemple #1
0
 def test_custom(self):
     toto = Student('toto')
     self.assertTrue(isinstance(toto, Student))
     a = sj.dumps(toto)
     py_a = sj.loads(a, clazz=Student)
     a2 = sj.dumps(py_a)
     self.assertEqual(a, a2)
Exemple #2
0
 def test_advanced_uuid(self):
     _uuid = uuid.uuid1()
     sample = deque([
         False, _uuid, 123,
         UserDict({}), 5 + 5j,
         UserDict({
             'haha': 2 + 3j,
             'toto': [False, {
                 'nini': 'xixi'
             }]
         }), True
     ])
     output = sj.dumps(sample, cls=sj.AdvancedEncoder)
     print(output)
     self.assertEqual(
         '[false, "%s", 123, {}, {"real": 5.0, "imag": 5.0}, {"haha": {"real": 2.0, "imag": 3.0}, "toto": [false, {"nini": "xixi"}]}, true]'
         % _uuid, output)
     output2 = sj.loads(output, cls=sj.AdvancedDecoder)
     print(output2)
     self.assertEqual([
         False, _uuid, 123, {}, (5 + 5j), {
             'haha': (2 + 3j),
             'toto': [False, {
                 'nini': 'xixi'
             }]
         }, True
     ], output2)
Exemple #3
0
 def test_advanced_slice(self):
     _slice = slice(1, 5, 2)
     sample = deque([
         False, _slice, 123,
         UserDict({}), 5 + 5j,
         UserDict({
             'haha': 2 + 3j,
             'toto': [False, {
                 'nini': 'xixi'
             }]
         }), True
     ])
     output = sj.dumps(sample, cls=sj.AdvancedEncoder)
     print(output)
     self.assertEqual(
         '[false, {"start": 1, "stop": 5, "step": 2}, 123, {}, {"real": 5.0, "imag": 5.0}, {"haha": {"real": 2.0, "imag": 3.0}, "toto": [false, {"nini": "xixi"}]}, true]',
         output)
     output2 = sj.loads(output, cls=sj.AdvancedDecoder)
     print(output2)
     self.assertEqual([
         False, _slice, 123, {}, (5 + 5j), {
             'haha': (2 + 3j),
             'toto': [False, {
                 'nini': 'xixi'
             }]
         }, True
     ], output2)
Exemple #4
0
 def test_advanced_complex(self):
     sample = UserList([
         False, 123,
         UserDict({}), 5 + 5j,
         UserDict({
             'haha': 2 + 3j,
             'toto': [False, {
                 'nini': 'xixi'
             }]
         }), True
     ])
     output1 = sj.dumps(sample, cls=sj.AdvancedEncoder, indent=2)
     sample = deque([
         False, 123,
         UserDict({}), 5 + 5j,
         UserDict({
             'haha': 2 + 3j,
             'toto': [False, {
                 'nini': 'xixi'
             }]
         }), True
     ])
     output2 = sj.dumps(sample, cls=sj.AdvancedEncoder, indent=2)
     self.assertEqual(output1, output2)
     output3 = sj.loads(output1, cls=sj.AdvancedDecoder)
     print(output3)
     self.assertEqual([
         False, 123, {}, (5 + 5j), {
             'haha': (2 + 3j),
             'toto': [False, {
                 'nini': 'xixi'
             }]
         }, True
     ], output3)
     self.assertTrue(isinstance(output3[3], complex))
Exemple #5
0
 def test_advanced_datetime(self):
     dt = datetime(year=2017,
                   month=11,
                   day=20,
                   hour=10,
                   minute=53,
                   second=22,
                   tzinfo=timezone(timedelta(-1, 68400)))
     b = UserDict({'haha': 2 + 3j, 'toto': [False, dt]})
     c = sj.dumps(b, cls=sj.AdvancedEncoder)
     self.assertEqual(
         '{"haha": {"real": 2.0, "imag": 3.0}, "toto": [false, "2017-11-20T10:53:22-05:00"]}',
         c)
     print(c)
     d = sj.loads(c, cls=sj.AdvancedDecoder)
     self.assertEqual(
         {
             'haha': (2 + 3j),
             'toto': [
                 False,
                 datetime(2017,
                          11,
                          20,
                          10,
                          53,
                          22,
                          tzinfo=timezone(timedelta(-1, 68400)))
             ]
         }, d)
     print(d)
Exemple #6
0
    def test_advanced_dumps(self):
        sample = UserList([
            False, 123,
            UserDict({}), 5 + 5j,
            UserDict({
                'haha': 2 + 3j,
                'toto': [False, {
                    'nini': 'xixi'
                }]
            }), True
        ])
        self.assertEqual(
            '[\r\n    false,\r\n    123,\r\n    {},\r\n    {\r\n        "real": 5.0,\r\n       '
            ' "imag": 5.0\r\n    },\r\n    {\r\n        "haha": {\r\n            "real": 2.0,\r\n       '
            '     "imag": 3.0\r\n        },\r\n        "toto": [\r\n            false,\r\n           '
            ' {\r\n                "nini": "xixi"\r\n            }\r\n        ]\r\n    },\r\n  '
            '  true\r\n]', sj.dumps(sample, cls=sj.AdvancedEncoder, indent=4))

        sample = UserList([
            False,
            datetime.now().date(), 123,
            UserDict({}), 5 + 5j,
            UserDict({
                'haha': 2 + 3j,
                'toto': [False, {
                    'nini': 'xixi'
                }]
            }), True
        ])
        haha = sj.dumps(sample, cls=sj.AdvancedEncoder, indent=4)
        print(haha)
        hhh = sj.loads(haha, cls=sj.AdvancedDecoder)
        print(hhh)
Exemple #7
0
    def test_loads_null(self):
        samples = ['null', 'null   ', '   null', '    null    ']
        for s in samples:
            self.assertEqual(None, sj.loads(s))

        samples = ['nullsdkflsdf', 'djlfsdlnull', 'dskfjlnulllskjflkds']
        for s in samples:
            self.assertRaises(sj.JSONError, sj.loads, s)
Exemple #8
0
    def test_loads_number(self):
        samples = [
            '123', '-345', '  234  ', '  -838', '9123   ', '-93290   ',
            '   1920   '
        ]
        for s in samples:
            self.assertEqual(int, type(sj.loads(s)))

        samples = [
            '0.23', '-3.45', '  23.4  ', '  -83.8', '912.3   ', '-93.290   ',
            '   192.0   '
        ]
        for s in samples:
            self.assertEqual(float, type(sj.loads(s)))

        samples = ['--0.123', '.123', '  ..123  ', '-.123 ']
        for s in samples:
            self.assertRaises(sj.JSONError, sj.loads, s)
Exemple #9
0
 def test_loads_perf_string_1(self):
     samples = ('  "  dslddjjjjjjjjj\\u7890jjjjjjjjjjjjjjjs"', )
     for s in samples:
         start_time_1 = datetime.now()
         print(sj.loads(s))
         print(datetime.now() - start_time_1)
         start_time_2 = datetime.now()
         #print(js.loads(s))
         print(datetime.now() - start_time_2)
Exemple #10
0
    def test_loads_boolean(self):
        samples = [
            'true', 'false', '   true', '   true   ', 'true   ', '  false',
            '   false   ', 'false '
        ]
        for s in samples:
            self.assertEqual(bool, type(sj.loads(s)))

        samples = ('truefalse', 'true false', '   true  false ', '  False')
        for s in samples:
            self.assertRaises(sj.JSONError, sj.loads, s)
Exemple #11
0
 def test_loads_object(self):
     sample = '  { "haha": 123, "dslkjf": false, "yifan": true, "h\\naha1": null , "haha3": [[[[[[null]]]]],[],[],[],[]     ], "haha4:": {"haha":{"haha":{"haha2:":[null, true, -0.334, "haha"]}}}}   '
     self.assertEqual(dict, type(sj.loads(sample)))
Exemple #12
0
 def test_loads_array(self):
     sample = '[[[[[[]]]]],[],[],[],[]     ]'
     self.assertEqual(list, type(sj.loads(sample)))
     sample = '[ null , false , ["ldskfjls", null, [], [[]]],  true, "  dslddjjjjjjjjj\\u7890jjjjjjjjjjjjjjjs"  , 123, -12312, -0.111 ]   '
     self.assertEqual(list, type(sj.loads(sample)))
Exemple #13
0
 def test_loads_string(self):
     sample = ' "l  sk \\n jfds"  '
     print(sj.loads(sample))