# See bindings/python for the python jsonparser module import jsonparser import json import glob passed = "\033[92mPassed\033[0m" failed = "\033[91mFailed\033[0m" # Strict JSON tests # for i, test in enumerate( map(lambda file: open(file).read(), sorted(glob.glob('valid*.json')))): try: jsonparser.decode(test) except jsonparser.JSONException as error: print ('valid/%d : Failed with error: %s' % (i, error)) continue py_decoded = json.loads(test) py_reencoded = json.dumps(py_decoded) try: reencoded = jsonparser.decode(py_reencoded) except jsonparser.JSONException as error: print ('valid/%d : Failed on re-encoded version with error: %s' % (i, error)) continue if reencoded != py_decoded: print ('valid/%d : %s:\n\n%s\n\nbecame\n\n%s\n' % (i, failed, test, reencoded)) else: print ('valid/%d : %s' % (i, passed)) for i, test in enumerate( map(lambda file: open(file).read(), sorted(glob.glob('invalid*.json')))): try: jsonparser.decode(test) except jsonparser.JSONException as error: print ('invalid/%d : %s: %s' % (i, passed, error)) continue print ('invalid/%d : %s (parsing succeeded and shouldn\'t have)' % (i, failed)) # Extension tests # for i, test in enumerate( map(lambda file: open(file).read(), sorted(glob.glob('ext-valid*.json')))): try: decoded = jsonparser.decode(test) print ('ext-valid/%d : %s: %s' % (i, passed, json.dumps(decoded))) except jsonparser.JSONException as error: print ('ext-valid/%d : Failed with error: %s' % (i, error)) continue for i, test in enumerate( map(lambda file: open(file).read(), sorted(glob.glob('ext-invalid*.json')))): try: jsonparser.decode(test) except jsonparser.JSONException as error: print ('ext-invalid/%d : %s: %s' % (i, passed, error)) continue print ('ext-invalid/%d : %s (parsing succeeded and shouldn\'t have)' % (i, failed))