Skip to content

Commit fa27190

Browse files
committed
Add tests on a bytes subclass
1 parent b182597 commit fa27190

1 file changed

Lines changed: 24 additions & 4 deletions

File tree

‎Lib/test/test_bytes.py‎

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1444,13 +1444,33 @@ class SubBytes(bytes):
14441444
def test_concat_cpython(self):
14451445
# Test optimizations
14461446
empty = b''
1447-
s = b"abc"
1448-
self.assertIs(s + empty, s)
1449-
self.assertIs(empty + s, s)
1450-
1447+
abc = b"abc"
1448+
self.assertIs(abc + empty, abc)
1449+
self.assertIs(empty + abc, abc)
14511450
self.assertIs(empty + bytearray(b''), empty)
14521451
self.assertIs(empty + memoryview(b''), empty)
14531452

1453+
class Subclass(bytes):
1454+
pass
1455+
1456+
empty_subclass = Subclass(b"")
1457+
self.assertIs(empty + empty_subclass, empty)
1458+
self.assertIs(empty_subclass + empty, empty)
1459+
self.assertIs(abc + empty_subclass, abc)
1460+
self.assertIs(empty_subclass + abc, abc)
1461+
1462+
def assert_copy(result, expected):
1463+
self.assertIsNot(result, expected)
1464+
self.assertEqual(type(result), bytes)
1465+
self.assertEqual(result, expected)
1466+
1467+
# Copy the string if it's a subclass
1468+
def_subclass = Subclass(b"def")
1469+
assert_copy(def_subclass + empty, b'def')
1470+
assert_copy(empty + def_subclass, b'def')
1471+
assert_copy(abc + def_subclass, b'abcdef')
1472+
assert_copy(def_subclass + abc, b'defabc')
1473+
14541474
@support.cpython_only
14551475
def test_repeat_cpython(self):
14561476
# Test optimizations

0 commit comments

Comments
 (0)