diff options
Diffstat (limited to 'Lib/test/test_bytes.py')
-rw-r--r-- | Lib/test/test_bytes.py | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py index f6ffe83..d5490a2 100644 --- a/Lib/test/test_bytes.py +++ b/Lib/test/test_bytes.py @@ -450,13 +450,34 @@ class BaseBytesTest: # check that ASCII whitespace is ignored self.assertEqual(self.type2test.fromhex(' 1A\n2B\t30\v'), b) + self.assertEqual(self.type2test.fromhex(b' 1A\n2B\t30\v'), b) for c in "\x09\x0A\x0B\x0C\x0D\x20": self.assertEqual(self.type2test.fromhex(c), self.type2test()) for c in "\x1C\x1D\x1E\x1F\x85\xa0\u2000\u2002\u2028": self.assertRaises(ValueError, self.type2test.fromhex, c) + # Check that we can parse bytes and bytearray + tests = [ + ("bytes", bytes), + ("bytearray", bytearray), + ("memoryview", memoryview), + ("array.array", lambda bs: array.array('B', bs)), + ] + for name, factory in tests: + with self.subTest(name=name): + self.assertEqual(self.type2test.fromhex(factory(b' 1A 2B 30 ')), b) + + # Invalid bytes are rejected + for u8 in b"\0\x1C\x1D\x1E\x1F\x85\xa0": + b = bytes([30, 31, u8]) + self.assertRaises(ValueError, self.type2test.fromhex, b) + self.assertEqual(self.type2test.fromhex('0000'), b'\0\0') - self.assertRaises(TypeError, self.type2test.fromhex, b'1B') + with self.assertRaisesRegex( + TypeError, + r'fromhex\(\) argument must be str or bytes-like, not tuple', + ): + self.type2test.fromhex(()) self.assertRaises(ValueError, self.type2test.fromhex, 'a') self.assertRaises(ValueError, self.type2test.fromhex, 'rt') self.assertRaises(ValueError, self.type2test.fromhex, '1a b cd') |