17db96d56Sopenharmony_cifrom test.test_json import CTest 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ciclass BadBool: 57db96d56Sopenharmony_ci def __bool__(self): 67db96d56Sopenharmony_ci 1/0 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ciclass TestSpeedups(CTest): 107db96d56Sopenharmony_ci def test_scanstring(self): 117db96d56Sopenharmony_ci self.assertEqual(self.json.decoder.scanstring.__module__, "_json") 127db96d56Sopenharmony_ci self.assertIs(self.json.decoder.scanstring, self.json.decoder.c_scanstring) 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_ci def test_encode_basestring_ascii(self): 157db96d56Sopenharmony_ci self.assertEqual(self.json.encoder.encode_basestring_ascii.__module__, 167db96d56Sopenharmony_ci "_json") 177db96d56Sopenharmony_ci self.assertIs(self.json.encoder.encode_basestring_ascii, 187db96d56Sopenharmony_ci self.json.encoder.c_encode_basestring_ascii) 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_ciclass TestDecode(CTest): 227db96d56Sopenharmony_ci def test_make_scanner(self): 237db96d56Sopenharmony_ci self.assertRaises(AttributeError, self.json.scanner.c_make_scanner, 1) 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_ci def test_bad_bool_args(self): 267db96d56Sopenharmony_ci def test(value): 277db96d56Sopenharmony_ci self.json.decoder.JSONDecoder(strict=BadBool()).decode(value) 287db96d56Sopenharmony_ci self.assertRaises(ZeroDivisionError, test, '""') 297db96d56Sopenharmony_ci self.assertRaises(ZeroDivisionError, test, '{}') 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci 327db96d56Sopenharmony_ciclass TestEncode(CTest): 337db96d56Sopenharmony_ci def test_make_encoder(self): 347db96d56Sopenharmony_ci # bpo-6986: The interpreter shouldn't crash in case c_make_encoder() 357db96d56Sopenharmony_ci # receives invalid arguments. 367db96d56Sopenharmony_ci self.assertRaises(TypeError, self.json.encoder.c_make_encoder, 377db96d56Sopenharmony_ci (True, False), 387db96d56Sopenharmony_ci b"\xCD\x7D\x3D\x4E\x12\x4C\xF9\x79\xD7\x52\xBA\x82\xF2\x27\x4A\x7D\xA0\xCA\x75", 397db96d56Sopenharmony_ci None) 407db96d56Sopenharmony_ci 417db96d56Sopenharmony_ci def test_bad_str_encoder(self): 427db96d56Sopenharmony_ci # Issue #31505: There shouldn't be an assertion failure in case 437db96d56Sopenharmony_ci # c_make_encoder() receives a bad encoder() argument. 447db96d56Sopenharmony_ci def bad_encoder1(*args): 457db96d56Sopenharmony_ci return None 467db96d56Sopenharmony_ci enc = self.json.encoder.c_make_encoder(None, lambda obj: str(obj), 477db96d56Sopenharmony_ci bad_encoder1, None, ': ', ', ', 487db96d56Sopenharmony_ci False, False, False) 497db96d56Sopenharmony_ci with self.assertRaises(TypeError): 507db96d56Sopenharmony_ci enc('spam', 4) 517db96d56Sopenharmony_ci with self.assertRaises(TypeError): 527db96d56Sopenharmony_ci enc({'spam': 42}, 4) 537db96d56Sopenharmony_ci 547db96d56Sopenharmony_ci def bad_encoder2(*args): 557db96d56Sopenharmony_ci 1/0 567db96d56Sopenharmony_ci enc = self.json.encoder.c_make_encoder(None, lambda obj: str(obj), 577db96d56Sopenharmony_ci bad_encoder2, None, ': ', ', ', 587db96d56Sopenharmony_ci False, False, False) 597db96d56Sopenharmony_ci with self.assertRaises(ZeroDivisionError): 607db96d56Sopenharmony_ci enc('spam', 4) 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_ci def test_bad_markers_argument_to_encoder(self): 637db96d56Sopenharmony_ci # https://bugs.python.org/issue45269 647db96d56Sopenharmony_ci with self.assertRaisesRegex( 657db96d56Sopenharmony_ci TypeError, 667db96d56Sopenharmony_ci r'make_encoder\(\) argument 1 must be dict or None, not int', 677db96d56Sopenharmony_ci ): 687db96d56Sopenharmony_ci self.json.encoder.c_make_encoder(1, None, None, None, ': ', ', ', 697db96d56Sopenharmony_ci False, False, False) 707db96d56Sopenharmony_ci 717db96d56Sopenharmony_ci def test_bad_bool_args(self): 727db96d56Sopenharmony_ci def test(name): 737db96d56Sopenharmony_ci self.json.encoder.JSONEncoder(**{name: BadBool()}).encode({'a': 1}) 747db96d56Sopenharmony_ci self.assertRaises(ZeroDivisionError, test, 'skipkeys') 757db96d56Sopenharmony_ci self.assertRaises(ZeroDivisionError, test, 'ensure_ascii') 767db96d56Sopenharmony_ci self.assertRaises(ZeroDivisionError, test, 'check_circular') 777db96d56Sopenharmony_ci self.assertRaises(ZeroDivisionError, test, 'allow_nan') 787db96d56Sopenharmony_ci self.assertRaises(ZeroDivisionError, test, 'sort_keys') 797db96d56Sopenharmony_ci 807db96d56Sopenharmony_ci def test_unsortable_keys(self): 817db96d56Sopenharmony_ci with self.assertRaises(TypeError): 827db96d56Sopenharmony_ci self.json.encoder.JSONEncoder(sort_keys=True).encode({'a': 1, 1: 'a'}) 83