17db96d56Sopenharmony_cifrom test.test_json import PyTest, CTest
27db96d56Sopenharmony_ci
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ci# from https://json.org/JSON_checker/test/pass1.json
57db96d56Sopenharmony_ciJSON = r'''
67db96d56Sopenharmony_ci[
77db96d56Sopenharmony_ci    "JSON Test Pattern pass1",
87db96d56Sopenharmony_ci    {"object with 1 member":["array with 1 element"]},
97db96d56Sopenharmony_ci    {},
107db96d56Sopenharmony_ci    [],
117db96d56Sopenharmony_ci    -42,
127db96d56Sopenharmony_ci    true,
137db96d56Sopenharmony_ci    false,
147db96d56Sopenharmony_ci    null,
157db96d56Sopenharmony_ci    {
167db96d56Sopenharmony_ci        "integer": 1234567890,
177db96d56Sopenharmony_ci        "real": -9876.543210,
187db96d56Sopenharmony_ci        "e": 0.123456789e-12,
197db96d56Sopenharmony_ci        "E": 1.234567890E+34,
207db96d56Sopenharmony_ci        "":  23456789012E66,
217db96d56Sopenharmony_ci        "zero": 0,
227db96d56Sopenharmony_ci        "one": 1,
237db96d56Sopenharmony_ci        "space": " ",
247db96d56Sopenharmony_ci        "quote": "\"",
257db96d56Sopenharmony_ci        "backslash": "\\",
267db96d56Sopenharmony_ci        "controls": "\b\f\n\r\t",
277db96d56Sopenharmony_ci        "slash": "/ & \/",
287db96d56Sopenharmony_ci        "alpha": "abcdefghijklmnopqrstuvwyz",
297db96d56Sopenharmony_ci        "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ",
307db96d56Sopenharmony_ci        "digit": "0123456789",
317db96d56Sopenharmony_ci        "0123456789": "digit",
327db96d56Sopenharmony_ci        "special": "`1~!@#$%^&*()_+-={':[,]}|;.</>?",
337db96d56Sopenharmony_ci        "hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A",
347db96d56Sopenharmony_ci        "true": true,
357db96d56Sopenharmony_ci        "false": false,
367db96d56Sopenharmony_ci        "null": null,
377db96d56Sopenharmony_ci        "array":[  ],
387db96d56Sopenharmony_ci        "object":{  },
397db96d56Sopenharmony_ci        "address": "50 St. James Street",
407db96d56Sopenharmony_ci        "url": "http://www.JSON.org/",
417db96d56Sopenharmony_ci        "comment": "// /* <!-- --",
427db96d56Sopenharmony_ci        "# -- --> */": " ",
437db96d56Sopenharmony_ci        " s p a c e d " :[1,2 , 3
447db96d56Sopenharmony_ci
457db96d56Sopenharmony_ci,
467db96d56Sopenharmony_ci
477db96d56Sopenharmony_ci4 , 5        ,          6           ,7        ],"compact":[1,2,3,4,5,6,7],
487db96d56Sopenharmony_ci        "jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}",
497db96d56Sopenharmony_ci        "quotes": "&#34; \u0022 %22 0x22 034 &#x22;",
507db96d56Sopenharmony_ci        "\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?"
517db96d56Sopenharmony_ci: "A key can be any string"
527db96d56Sopenharmony_ci    },
537db96d56Sopenharmony_ci    0.5 ,98.6
547db96d56Sopenharmony_ci,
557db96d56Sopenharmony_ci99.44
567db96d56Sopenharmony_ci,
577db96d56Sopenharmony_ci
587db96d56Sopenharmony_ci1066,
597db96d56Sopenharmony_ci1e1,
607db96d56Sopenharmony_ci0.1e1,
617db96d56Sopenharmony_ci1e-1,
627db96d56Sopenharmony_ci1e00,2e+00,2e-00
637db96d56Sopenharmony_ci,"rosebud"]
647db96d56Sopenharmony_ci'''
657db96d56Sopenharmony_ci
667db96d56Sopenharmony_ciclass TestPass1:
677db96d56Sopenharmony_ci    def test_parse(self):
687db96d56Sopenharmony_ci        # test in/out equivalence and parsing
697db96d56Sopenharmony_ci        res = self.loads(JSON)
707db96d56Sopenharmony_ci        out = self.dumps(res)
717db96d56Sopenharmony_ci        self.assertEqual(res, self.loads(out))
727db96d56Sopenharmony_ci
737db96d56Sopenharmony_ci
747db96d56Sopenharmony_ciclass TestPyPass1(TestPass1, PyTest): pass
757db96d56Sopenharmony_ciclass TestCPass1(TestPass1, CTest): pass
76