17db96d56Sopenharmony_ciimport os
27db96d56Sopenharmony_ciimport json
37db96d56Sopenharmony_ciimport doctest
47db96d56Sopenharmony_ciimport unittest
57db96d56Sopenharmony_ci
67db96d56Sopenharmony_cifrom test import support
77db96d56Sopenharmony_cifrom test.support import import_helper
87db96d56Sopenharmony_ci
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_ci# import json with and without accelerations
117db96d56Sopenharmony_cicjson = import_helper.import_fresh_module('json', fresh=['_json'])
127db96d56Sopenharmony_cipyjson = import_helper.import_fresh_module('json', blocked=['_json'])
137db96d56Sopenharmony_ci# JSONDecodeError is cached inside the _json module
147db96d56Sopenharmony_cicjson.JSONDecodeError = cjson.decoder.JSONDecodeError = json.JSONDecodeError
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_ci# create two base classes that will be used by the other tests
177db96d56Sopenharmony_ciclass PyTest(unittest.TestCase):
187db96d56Sopenharmony_ci    json = pyjson
197db96d56Sopenharmony_ci    loads = staticmethod(pyjson.loads)
207db96d56Sopenharmony_ci    dumps = staticmethod(pyjson.dumps)
217db96d56Sopenharmony_ci    JSONDecodeError = staticmethod(pyjson.JSONDecodeError)
227db96d56Sopenharmony_ci
237db96d56Sopenharmony_ci@unittest.skipUnless(cjson, 'requires _json')
247db96d56Sopenharmony_ciclass CTest(unittest.TestCase):
257db96d56Sopenharmony_ci    if cjson is not None:
267db96d56Sopenharmony_ci        json = cjson
277db96d56Sopenharmony_ci        loads = staticmethod(cjson.loads)
287db96d56Sopenharmony_ci        dumps = staticmethod(cjson.dumps)
297db96d56Sopenharmony_ci        JSONDecodeError = staticmethod(cjson.JSONDecodeError)
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ci# test PyTest and CTest checking if the functions come from the right module
327db96d56Sopenharmony_ciclass TestPyTest(PyTest):
337db96d56Sopenharmony_ci    def test_pyjson(self):
347db96d56Sopenharmony_ci        self.assertEqual(self.json.scanner.make_scanner.__module__,
357db96d56Sopenharmony_ci                         'json.scanner')
367db96d56Sopenharmony_ci        self.assertEqual(self.json.decoder.scanstring.__module__,
377db96d56Sopenharmony_ci                         'json.decoder')
387db96d56Sopenharmony_ci        self.assertEqual(self.json.encoder.encode_basestring_ascii.__module__,
397db96d56Sopenharmony_ci                         'json.encoder')
407db96d56Sopenharmony_ci
417db96d56Sopenharmony_ciclass TestCTest(CTest):
427db96d56Sopenharmony_ci    def test_cjson(self):
437db96d56Sopenharmony_ci        self.assertEqual(self.json.scanner.make_scanner.__module__, '_json')
447db96d56Sopenharmony_ci        self.assertEqual(self.json.decoder.scanstring.__module__, '_json')
457db96d56Sopenharmony_ci        self.assertEqual(self.json.encoder.c_make_encoder.__module__, '_json')
467db96d56Sopenharmony_ci        self.assertEqual(self.json.encoder.encode_basestring_ascii.__module__,
477db96d56Sopenharmony_ci                         '_json')
487db96d56Sopenharmony_ci
497db96d56Sopenharmony_ci
507db96d56Sopenharmony_cidef load_tests(loader, _, pattern):
517db96d56Sopenharmony_ci    suite = unittest.TestSuite()
527db96d56Sopenharmony_ci    for mod in (json, json.encoder, json.decoder):
537db96d56Sopenharmony_ci        suite.addTest(doctest.DocTestSuite(mod))
547db96d56Sopenharmony_ci    suite.addTest(TestPyTest('test_pyjson'))
557db96d56Sopenharmony_ci    suite.addTest(TestCTest('test_cjson'))
567db96d56Sopenharmony_ci
577db96d56Sopenharmony_ci    pkg_dir = os.path.dirname(__file__)
587db96d56Sopenharmony_ci    return support.load_package_tests(pkg_dir, loader, suite, pattern)
59