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)
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
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
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)
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
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
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
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
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
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)
def test_dumps(): kson.loads_schemas(FAMILY_SCHEMAS) kson_data = kson.dumps(FAMILY_OBJ, 'grand_parent') assert kson_data == FAMILY_KSON
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
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
def test_allow_circular_reference(self): a = [1] a.append(a) with self.assertRaises(RecursionError): kson.dumps(a, check_circular=False)
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'