summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/basics/memoryview_slice_size.py27
-rw-r--r--tests/basics/memoryview_slice_size.py.exp2
2 files changed, 29 insertions, 0 deletions
diff --git a/tests/basics/memoryview_slice_size.py b/tests/basics/memoryview_slice_size.py
new file mode 100644
index 000000000..c56514d21
--- /dev/null
+++ b/tests/basics/memoryview_slice_size.py
@@ -0,0 +1,27 @@
+# test memoryview slicing beyond the limit of what memoryview can internally index
+
+try:
+ from sys import maxsize
+ from uctypes import bytearray_at
+
+ memoryview
+except:
+ print("SKIP")
+ raise SystemExit
+
+if maxsize <= 0xFFFF_FFFF:
+ slice_max = 0xFF_FFFF
+else:
+ slice_max = 0xFF_FFFF_FFFF_FFFF
+
+buf = bytearray_at(0, slice_max + 2)
+mv = memoryview(buf)
+
+# this should work
+print(mv[slice_max : slice_max + 1])
+
+# this should overflow the internal index for memoryview slicing
+try:
+ print(mv[slice_max + 1 : slice_max + 2])
+except OverflowError:
+ print("OverflowError")
diff --git a/tests/basics/memoryview_slice_size.py.exp b/tests/basics/memoryview_slice_size.py.exp
new file mode 100644
index 000000000..34baadd35
--- /dev/null
+++ b/tests/basics/memoryview_slice_size.py.exp
@@ -0,0 +1,2 @@
+<memoryview>
+OverflowError