|
8 | 8 | class TestDecode: |
9 | 9 | def test_decimal(self): |
10 | 10 | rval = self.loads('1.1', parse_float=decimal.Decimal) |
11 | | - self.assertTrue(isinstance(rval, decimal.Decimal)) |
| 11 | + self.assertIsInstance(rval, decimal.Decimal) |
12 | 12 | self.assertEqual(rval, decimal.Decimal('1.1')) |
13 | 13 |
|
14 | 14 | def test_float(self): |
15 | 15 | rval = self.loads('1', parse_int=float) |
16 | | - self.assertTrue(isinstance(rval, float)) |
| 16 | + self.assertIsInstance(rval, float) |
17 | 17 | self.assertEqual(rval, 1.0) |
18 | 18 |
|
| 19 | + def test_bytes(self): |
| 20 | + self.assertEqual(self.loads(b"1"), 1) |
| 21 | + |
| 22 | + def test_parse_constant(self): |
| 23 | + for constant, expected in [ |
| 24 | + ("Infinity", "INFINITY"), |
| 25 | + ("-Infinity", "-INFINITY"), |
| 26 | + ("NaN", "NAN"), |
| 27 | + ]: |
| 28 | + self.assertEqual( |
| 29 | + self.loads(constant, parse_constant=str.upper), expected |
| 30 | + ) |
| 31 | + |
| 32 | + def test_constant_invalid_case(self): |
| 33 | + for constant in [ |
| 34 | + "nan", "NAN", "naN", "infinity", "INFINITY", "inFiniTy" |
| 35 | + ]: |
| 36 | + with self.assertRaises(self.JSONDecodeError): |
| 37 | + self.loads(constant) |
| 38 | + |
19 | 39 | def test_empty_objects(self): |
20 | 40 | self.assertEqual(self.loads('{}'), {}) |
21 | 41 | self.assertEqual(self.loads('[]'), []) |
@@ -88,7 +108,8 @@ def test_string_with_utf8_bom(self): |
88 | 108 | self.json.load(StringIO(bom_json)) |
89 | 109 | self.assertIn('BOM', str(cm.exception)) |
90 | 110 | # make sure that the BOM is not detected in the middle of a string |
91 | | - bom_in_str = '"{}"'.format(''.encode('utf-8-sig').decode('utf-8')) |
| 111 | + bom = ''.encode('utf-8-sig').decode('utf-8') |
| 112 | + bom_in_str = f'"{bom}"' |
92 | 113 | self.assertEqual(self.loads(bom_in_str), '\ufeff') |
93 | 114 | self.assertEqual(self.json.load(StringIO(bom_in_str)), '\ufeff') |
94 | 115 |
|
|
0 commit comments