Exemplo n.º 1
0
    def test_does_not_leak_dictionary_values(self):
        import gc

        gc.collect()
        value = ["abc"]
        data = {"1": value}
        ref_count = sys.getrefcount(value)
        ujson.dumps(data)
        self.assertEqual(ref_count, sys.getrefcount(value))
Exemplo n.º 2
0
    def test_does_not_leak_dictionary_None_key(self):
        import gc

        gc.collect()
        key1 = None
        value1 = 1
        data = {key1: value1}
        ref_count1 = sys.getrefcount(key1)
        ujson.dumps(data)
        self.assertEqual(ref_count1, sys.getrefcount(key1))
Exemplo n.º 3
0
    def test_does_not_leak_dictionary_keys(self):
        import gc

        gc.collect()
        key1 = "1"
        key2 = "1"
        value1 = ["abc"]
        value2 = [1, 2, 3]
        data = {key1: value1, key2: value2}
        ref_count1 = sys.getrefcount(key1)
        ref_count2 = sys.getrefcount(key2)
        ujson.dumps(data)
        self.assertEqual(ref_count1, sys.getrefcount(key1))
        self.assertEqual(ref_count2, sys.getrefcount(key2))
Exemplo n.º 4
0
    def testEncodeSymbols(self):
        s = "\u273f\u2661\u273f"  # ✿♡✿
        encoded = ujson.dumps(s)
        encoded_json = json.dumps(s)
        self.assertEqual(len(encoded), len(s) * 6 + 2)  # 6 characters + quotes
        self.assertEqual(encoded, encoded_json)
        decoded = ujson.loads(encoded)
        self.assertEqual(s, decoded)

        # ujson outputs an UTF-8 encoded str object
        encoded = ujson.dumps(s, ensure_ascii=False)
        # json outputs an unicode object
        encoded_json = json.dumps(s, ensure_ascii=False)
        self.assertEqual(len(encoded), len(s) + 2)  # original length + quotes
        self.assertEqual(encoded, encoded_json)
        decoded = ujson.loads(encoded)
        self.assertEqual(s, decoded)
Exemplo n.º 5
0
    def testEncodeUnicodeBMP(self):
        s = "\U0001f42e\U0001f42e\U0001F42D\U0001F42D"  # 🐮🐮🐭🐭
        encoded = ujson.dumps(s)
        encoded_json = json.dumps(s)

        if len(s) == 4:
            self.assertEqual(len(encoded), len(s) * 12 + 2)
        else:
            self.assertEqual(len(encoded), len(s) * 6 + 2)

        self.assertEqual(encoded, encoded_json)
        decoded = ujson.loads(encoded)
        self.assertEqual(s, decoded)

        # ujson outputs an UTF-8 encoded str object
        encoded = ujson.dumps(s, ensure_ascii=False)
        # json outputs an unicode object
        encoded_json = json.dumps(s, ensure_ascii=False)
        self.assertEqual(len(encoded), len(s) + 2)  # original length + quotes
        self.assertEqual(encoded, encoded_json)
        decoded = ujson.loads(encoded)
        self.assertEqual(s, decoded)
Exemplo n.º 6
0
    def test_encodeNullCharacter(self):
        input = "31337 \x00 1337"
        output = ujson.encode(input)
        self.assertEqual(input, json.loads(output))
        self.assertEqual(output, json.dumps(input))
        self.assertEqual(input, ujson.decode(output))

        input = "\x00"
        output = ujson.encode(input)
        self.assertEqual(input, json.loads(output))
        self.assertEqual(output, json.dumps(input))
        self.assertEqual(input, ujson.decode(output))

        self.assertEqual('"  \\u0000\\r\\n "', ujson.dumps("  \u0000\r\n "))
Exemplo n.º 7
0
 def test_sortKeys(self):
     data = {"a": 1, "c": 1, "b": 1, "e": 1, "f": 1, "d": 1}
     sortedKeys = ujson.dumps(data, sort_keys=True)
     self.assertEqual(sortedKeys, '{"a":1,"b":1,"c":1,"d":1,"e":1,"f":1}')
Exemplo n.º 8
0
 def test_WriteArrayOfSymbolsFromTuple(self):
     self.assertEqual("[true,false,null]", ujson.dumps((True, False, None)))
Exemplo n.º 9
0
 def test_WriteArrayOfSymbolsFromList(self):
     self.assertEqual("[true,false,null]", ujson.dumps([True, False, None]))
Exemplo n.º 10
0
 def test_WriteNull(self):
     self.assertEqual("null", ujson.dumps(None))
Exemplo n.º 11
0
 def test_WriteFalse(self):
     self.assertEqual("false", ujson.dumps(False))
Exemplo n.º 12
0
 def test_WriteTrue(self):
     self.assertEqual("true", ujson.dumps(True))
Exemplo n.º 13
0
 def test_encodeDecodeLongDecimal(self):
     sut = {"a": -528656961.4399388}
     encoded = ujson.dumps(sut)
     ujson.decode(encoded)
Exemplo n.º 14
0
 def testWriteEscapedString(self):
     self.assertEqual(
         "\"\\u003cimg src='\\u0026amp;'\\/\\u003e\"",
         ujson.dumps("<img src='&amp;'/>", encode_html_chars=True),
     )