summaryrefslogtreecommitdiff
path: root/tests/basics
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basics')
-rw-r--r--tests/basics/bytearray_add.py9
-rw-r--r--tests/basics/bytearray_add_self.py8
-rw-r--r--tests/basics/bytearray_add_self.py.exp1
-rw-r--r--tests/basics/bytearray_slice_assign.py18
4 files changed, 29 insertions, 7 deletions
diff --git a/tests/basics/bytearray_add.py b/tests/basics/bytearray_add.py
index a7e2b5737..1f30a3b74 100644
--- a/tests/basics/bytearray_add.py
+++ b/tests/basics/bytearray_add.py
@@ -15,4 +15,11 @@ print(b)
# this inplace add tests the code when the buffer doesn't need to be increased
b = bytearray()
-b += b''
+b += b""
+
+# extend a bytearray from itself
+b = bytearray(b"abcdefgh")
+for _ in range(4):
+ c = bytearray(b) # extra allocation, as above
+ b.extend(b)
+print(b)
diff --git a/tests/basics/bytearray_add_self.py b/tests/basics/bytearray_add_self.py
new file mode 100644
index 000000000..94ae8689f
--- /dev/null
+++ b/tests/basics/bytearray_add_self.py
@@ -0,0 +1,8 @@
+# add a bytearray to itself
+# This is not supported by CPython as of 3.11.18.
+
+b = bytearray(b"123456789")
+for _ in range(4):
+ c = bytearray(b) # extra allocation increases chance 'b' has to relocate
+ b += b
+print(b)
diff --git a/tests/basics/bytearray_add_self.py.exp b/tests/basics/bytearray_add_self.py.exp
new file mode 100644
index 000000000..5ef948157
--- /dev/null
+++ b/tests/basics/bytearray_add_self.py.exp
@@ -0,0 +1 @@
+bytearray(b'123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789123456789')
diff --git a/tests/basics/bytearray_slice_assign.py b/tests/basics/bytearray_slice_assign.py
index fa7878e10..4de081904 100644
--- a/tests/basics/bytearray_slice_assign.py
+++ b/tests/basics/bytearray_slice_assign.py
@@ -18,7 +18,7 @@ l = bytearray(x)
l[1:3] = bytearray()
print(l)
l = bytearray(x)
-#del l[1:3]
+# del l[1:3]
print(l)
l = bytearray(x)
@@ -28,7 +28,7 @@ l = bytearray(x)
l[:3] = bytearray()
print(l)
l = bytearray(x)
-#del l[:3]
+# del l[:3]
print(l)
l = bytearray(x)
@@ -38,7 +38,7 @@ l = bytearray(x)
l[:-3] = bytearray()
print(l)
l = bytearray(x)
-#del l[:-3]
+# del l[:-3]
print(l)
# slice assignment that extends the array
@@ -61,8 +61,14 @@ b[1:1] = b"12345"
print(b)
# Growth of bytearray via slice extension
-b = bytearray(b'12345678')
-b.append(57) # expand and add a bit of unused space at end of the bytearray
+b = bytearray(b"12345678")
+b.append(57) # expand and add a bit of unused space at end of the bytearray
for i in range(400):
- b[-1:] = b'ab' # grow slowly into the unused space
+ b[-1:] = b"ab" # grow slowly into the unused space
+print(len(b), b)
+
+# Growth of bytearray via slice extension from itself
+b = bytearray(b"1234567")
+for i in range(3):
+ b[-1:] = b
print(len(b), b)