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 "))
 def test_encodeToUTF8(self):
     input = b"\xe6\x97\xa5\xd1\x88"
     input = input.decode("utf-8")
     enc = ujson.encode(input, ensure_ascii=False)
     dec = ujson.decode(enc)
     self.assertEqual(enc, json.dumps(input, ensure_ascii=False))
     self.assertEqual(dec, json.loads(enc))
    def test_encodeArrayInArray(self):
        input = [[[[]]]]
        output = ujson.encode(input)

        self.assertEqual(input, json.loads(output))
        self.assertEqual(output, json.dumps(input))
        self.assertEqual(input, ujson.decode(output))
    def test_encodeUnicode4BytesUTF8(self):
        input = "\xf0\x91\x80\xb0TRAILINGNORMAL"
        enc = ujson.encode(input)
        dec = ujson.decode(enc)

        self.assertEqual(enc, json_unicode(input))
        self.assertEqual(dec, json.loads(enc))
    def test_encodeUnicode4BytesUTF8Highest(self):
        input = "\xf3\xbf\xbf\xbfTRAILINGNORMAL"
        enc = ujson.encode(input)
        dec = ujson.decode(enc)

        self.assertEqual(enc, json_unicode(input))
        self.assertEqual(dec, json.loads(enc))
    def test_encodeLongUnsignedConversion(self):
        input = 18446744073709551615
        output = ujson.encode(input)

        self.assertEqual(input, json.loads(output))
        self.assertEqual(output, json.dumps(input))
        self.assertEqual(input, ujson.decode(output))
    def test_encodeUnicodeSurrogatePair(self):
        input = "\xf0\x90\x8d\x86"
        enc = ujson.encode(input)
        dec = ujson.decode(enc)

        self.assertEqual(enc, json_unicode(input))
        self.assertEqual(dec, json.loads(enc))
 def test_doubleLongIssue(self):
     sut = {"a": -4342969734183514}
     encoded = json.dumps(sut)
     decoded = json.loads(encoded)
     self.assertEqual(sut, decoded)
     encoded = ujson.encode(sut)
     decoded = ujson.decode(encoded)
     self.assertEqual(sut, decoded)
 def test_doubleLongDecimalIssue(self):
     sut = {"a": -12345678901234.56789012}
     encoded = json.dumps(sut)
     decoded = json.loads(encoded)
     self.assertEqual(sut, decoded)
     encoded = ujson.encode(sut)
     decoded = ujson.decode(encoded)
     self.assertEqual(sut, decoded)
    def test_encodeLongNegConversion(self):
        input = -9223372036854775808
        output = ujson.encode(input)

        json.loads(output)
        ujson.decode(output)

        self.assertEqual(input, json.loads(output))
        self.assertEqual(output, json.dumps(input))
        self.assertEqual(input, ujson.decode(output))
 def test_encodeListLongConversion(self):
     input = [
         9223372036854775807,
         9223372036854775807,
         9223372036854775807,
         9223372036854775807,
         9223372036854775807,
         9223372036854775807,
     ]
     output = ujson.encode(input)
     self.assertEqual(input, json.loads(output))
     self.assertEqual(input, ujson.decode(output))
    def test_encodeDictWithUnicodeKeys(self):
        input = {
            "key1": "value1",
            "key1": "value1",
            "key1": "value1",
            "key1": "value1",
            "key1": "value1",
            "key1": "value1",
        }
        ujson.encode(input)

        input = {
            "بن": "value1",
            "بن": "value1",
            "بن": "value1",
            "بن": "value1",
            "بن": "value1",
            "بن": "value1",
            "بن": "value1",
        }
        ujson.encode(input)
    def test_object_with_complex_json(self):
        # If __json__ returns a string, then that string
        # will be used as a raw JSON snippet in the object.
        obj = {u"foo": [u"bar", u"baz"]}

        class JSONTest:
            def __json__(self):
                return ujson.encode(obj)

        d = {u"key": JSONTest()}
        output = ujson.encode(d)
        dec = ujson.decode(output)
        self.assertEqual(dec, {u"key": obj})
    def test_object_with_json_unicode(self):
        # If __json__ returns a string, then that string
        # will be used as a raw JSON snippet in the object.
        output_text = u"this is the correct output"

        class JSONTest:
            def __json__(self):
                return u'"' + output_text + u'"'

        d = {u"key": JSONTest()}
        output = ujson.encode(d)
        dec = ujson.decode(output)
        self.assertEqual(dec, {u"key": output_text})
    def test_toDict(self):
        d = {"key": 31337}

        class DictTest:
            def toDict(self):
                return d

            def __json__(self):
                return '"json defined"'  # Fallback and shouldn't be called.

        o = DictTest()
        output = ujson.encode(o)
        dec = ujson.decode(output)
        self.assertEqual(dec, d)
 def test_encodeListConversion(self):
     input = [1, 2, 3, 4]
     output = ujson.encode(input)
     self.assertEqual(input, json.loads(output))
     self.assertEqual(input, ujson.decode(output))
 def test_encodeStringConversion2(self):
     input = "A string \\ / \b \f \n \r \t"
     output = ujson.encode(input)
     self.assertEqual(input, json.loads(output))
     self.assertEqual(output, '"A string \\\\ \\/ \\b \\f \\n \\r \\t"')
     self.assertEqual(input, ujson.decode(output))
 def test_encodeUnicodeConversion1(self):
     input = "Räksmörgås اسامة بن محمد بن عوض بن لادن"
     enc = ujson.encode(input)
     dec = ujson.decode(enc)
     self.assertEqual(enc, json_unicode(input))
     self.assertEqual(dec, json.loads(enc))
 def test_encodeBigEscape(self):
     for x in range(10):
         base = "\u00e5".encode("utf-8")
         input = base * 1024 * 1024 * 2
         ujson.encode(input)
 def test_encodeUnicodeConversion2(self):
     input = "\xe6\x97\xa5\xd1\x88"
     enc = ujson.encode(input)
     dec = ujson.decode(enc)
     self.assertEqual(enc, json_unicode(input))
     self.assertEqual(dec, json.loads(enc))
 def test_encodeControlEscaping(self):
     input = "\x19"
     enc = ujson.encode(input)
     dec = ujson.decode(enc)
     self.assertEqual(input, dec)
     self.assertEqual(enc, json_unicode(input))
 def test_encodeIntNegConversion(self):
     input = -31337
     output = ujson.encode(input)
     self.assertEqual(input, json.loads(output))
     self.assertEqual(output, json.dumps(input))
     self.assertEqual(input, ujson.decode(output))
    def test_encodeOrderedDict(self):
        from collections import OrderedDict

        input = OrderedDict([(1, 1), (0, 0), (8, 8), (2, 2)])
        self.assertEqual('{"1":1,"0":0,"8":8,"2":2}', ujson.encode(input))
 def helper(expected_output, **encode_kwargs):
     output = ujson.encode(input, **encode_kwargs)
     self.assertEqual(output, expected_output)
     if encode_kwargs.get("escape_forward_slashes", True):
         self.assertEqual(input, json.loads(output))
         self.assertEqual(input, ujson.decode(output))
 def test_encodeArrayOfDoubles(self):
     input = [31337.31337, 31337.31337, 31337.31337, 31337.31337] * 10
     output = ujson.encode(input)
     self.assertEqual(input, json.loads(output))
     # self.assertEqual(output, json.dumps(input))
     self.assertEqual(input, ujson.decode(output))
 def test_decimalDecodeTest(self):
     sut = {"a": 4.56}
     encoded = ujson.encode(sut)
     decoded = ujson.decode(encoded)
     self.assertAlmostEqual(sut[u"a"], decoded[u"a"])
 def __json__(self):
     return ujson.encode(obj)
 def test_encodeDictConversion(self):
     input = {"k1": 1, "k2": 2, "k3": 3, "k4": 4}
     output = ujson.encode(input)
     self.assertEqual(input, json.loads(output))
     self.assertEqual(input, ujson.decode(output))
     self.assertEqual(input, ujson.decode(output))
 def test_encodeFalseConversion(self):
     input = False
     output = ujson.encode(input)
     self.assertEqual(input, json.loads(output))
     self.assertEqual(output, json.dumps(input))
     self.assertEqual(input, ujson.decode(output))
 def test_encodeArrayOfNestedArrays(self):
     input = [[[[]]]] * 20
     output = ujson.encode(input)
     self.assertEqual(input, json.loads(output))
     # self.assertEqual(output, json.dumps(input))
     self.assertEqual(input, ujson.decode(output))