Esempio n. 1
0
        def test_uni(center, radius=0x20):
            for i in range(center - radius, center + radius):
                uni = chr(i)
                u = kson.dumps(uni)
                u_ascii = kson.dumps(uni, ensure_ascii=True)
                u_no_ascii = kson.dumps(uni, ensure_ascii=False)

                assert u == u_no_ascii
                assert u_ascii == json.dumps(uni, ensure_ascii=True)
                assert u_no_ascii == json.dumps(uni, ensure_ascii=False)

                assert uni == json.loads(u)
                assert uni == kson.loads(u_ascii)
                assert uni == kson.loads(u_no_ascii)
Esempio n. 2
0
def convert(opts):
    if not opts["j2j"]:
        in_schema, out_schema, ok = init_schemas(opts)

        if not ok:
            return 1

    in_data = read(opts)

    if opts["j2k"] or opts["j2j"]:
        in_data = json.loads(in_data)

    if opts["k2j"] or opts["k2k"]:
        in_data = kson.loads(in_data, in_schema["id"])

    indent = 4 if opts["--pretty"] else None

    if opts["k2j"] or opts["j2j"]:
        out_data = json.dumps(in_data, indent=indent)

    if opts["j2k"] or opts["k2k"]:
        out_data = kson.dumps(in_data, out_schema["id"], indent=indent)

    write(opts, out_data)
    return 0
Esempio n. 3
0
def convert(opts):
    if not opts['j2j']:
        in_schema, out_schema, ok = init_schemas(opts)

        if not ok:
            return 1

    in_data = read(opts)

    if opts['j2k'] or opts['j2j']:
        in_data = json.loads(in_data)

    if opts['k2j'] or opts['k2k']:
        in_data = kson.loads(in_data, in_schema['id'])

    indent = 4 if opts['--pretty'] else None

    if opts['k2j'] or opts['j2j']:
        out_data = json.dumps(in_data, indent=indent)

    if opts['j2k'] or opts['k2k']:
        out_data = kson.dumps(in_data, out_schema['id'], indent=indent)

    write(opts, out_data)
    return 0
Esempio n. 4
0
    def test_non_finite_numbers(self):
        for i in '[nan, inf, -inf]', '[NaN, Infinity, -Infinity]':
            nan, inf, minus_inf = parse(i)
            assert nan != nan
            assert inf == float('inf')
            assert minus_inf == -inf

        for i in 'NAN', 'nAn', 'Inf', 'infinity', '--inf':
            with self.assertRaises(Exception):
                parse(i)

        for i in 'nan', 'NaN', 'inf', 'Infinity', '-inf', '-Infinity':
            x = kson.loads(i)
            s = kson.dumps(x)
            assert s
            with self.assertRaises(ValueError):
                kson.dumps(x, allow_nan=False)
Esempio n. 5
0
def introspect(opts, in_data, schema_id=None):
    sid, schemas = kson.detect_schemas(read(opts), id_prefix=opts["--schema_id"])

    if opts["--json"]:
        schema_data = json.dumps(schemas, indent=4)
    else:
        schema_data = kson.dumps(schemas, "schema")

    write(opts, schema_data)
    return 0
Esempio n. 6
0
    def test_unicode_char2(self):
        uni = chr(0x7E)

        k = kson.dumps(uni)
        j = json.dumps(uni)
        assert j == k

        k = kson.dumps(uni, ensure_ascii=False)
        j = json.dumps(uni, ensure_ascii=False)
        assert j == k

        uni = chr(0x7F)
        k = kson.dumps(uni, ensure_ascii=False)
        j = json.dumps(uni, ensure_ascii=False)
        assert j == k

        k = kson.dumps(uni, ensure_ascii=True)
        j = json.dumps(uni, ensure_ascii=True)
        assert j == k
Esempio n. 7
0
def introspect(opts, in_data, schema_id=None):
    sid, schemas = kson.detect_schemas(read(opts),
                                       id_prefix=opts['--schema_id'])

    if opts['--json']:
        schema_data = json.dumps(schemas, indent=4)
    else:
        schema_data = kson.dumps(schemas, 'schema')

    write(opts, schema_data)
    return 0
Esempio n. 8
0
    def test_unicode_bench(self):
        count = 64

        import time

        t = time.time()
        for i in range(count):
            uni = chr(i)
            u = kson.dumps(uni)
            json.loads(u)

        d1 = time.time() - t

        t = time.time()
        for i in range(count):
            uni = chr(i)
            u = kson.dumps(uni)
            kson.loads(u)
        d2 = time.time() - t

        ratio = d2 / d1
        assert ratio < 5
Esempio n. 9
0
def test_codec_round_trip():
    kson.add_schema("""[
        "schema",
        "codec_test",
        ["c_field", "c_arr"],
        ["date|int36", "[]enum:a:b:c"]
    ]""")
    date = datetime(1955, 11, 5, 0, 0, 0)
    raw = kson.dumps({
        'c_field': date,
        'c_arr': ["a", "a", "b", "b", "c", "a", "b", "a", "no enum"]
    }, "codec_test")

    assert raw == '["codec_test","-7dzxc0",[1,1,2,2,3,1,2,1,"no enum"]]'
    assert kson.loads(raw)['c_field'] == date
Esempio n. 10
0
def test_round_trip():
    kson.loads_schemas(FAMILY_SCHEMAS)
    family_obj = kson.loads(kson.dumps(FAMILY_OBJ, 'grand_parent'))
    assert data_eq(family_obj, FAMILY_OBJ)
Esempio n. 11
0
def test_dumps():
    kson.loads_schemas(FAMILY_SCHEMAS)
    kson_data = kson.dumps(FAMILY_OBJ, 'grand_parent')
    assert kson_data == FAMILY_KSON
Esempio n. 12
0
def round_trip(x, pre, post=None, **kwargs):
    post = pre if post is None else post
    assert kson.loads(pre) == x
    assert kson.dumps(x, **kwargs) == post
    if not kwargs:
        assert json.dumps(x) == post
Esempio n. 13
0
 def test_unicode_char(self):
     uni = chr(0x7F)
     k = kson.dumps(uni, ensure_ascii=True)
     j = json.dumps(uni, ensure_ascii=True)
     print('one', repr(j), repr(k))
     assert j == k
Esempio n. 14
0
 def test_allow_circular_reference(self):
     a = [1]
     a.append(a)
     with self.assertRaises(RecursionError):
         kson.dumps(a, check_circular=False)
Esempio n. 15
0
 def test_find_circular_reference(self):
     a = [1]
     a.append(a)
     with self.assertRaises(ValueError) as m:
         kson.dumps(a)
     assert m.exception.args[0] == 'Circular reference detected'