summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics/memoryview_slice_assign.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basics/memoryview_slice_assign.py')
-rw-r--r--tests/basics/memoryview_slice_assign.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/basics/memoryview_slice_assign.py b/tests/basics/memoryview_slice_assign.py
new file mode 100644
index 0000000000..b730dceba6
--- /dev/null
+++ b/tests/basics/memoryview_slice_assign.py
@@ -0,0 +1,63 @@
+# test slice assignment to memoryview
+
+try:
+ memoryview(bytearray(1))[:] = memoryview(bytearray(1))
+except (NameError, TypeError):
+ print("SKIP")
+ raise SystemExit
+
+try:
+ import uarray as array
+except ImportError:
+ try:
+ import array
+ except ImportError:
+ print("SKIP")
+ raise SystemExit
+
+# test slice assignment between memoryviews
+b1 = bytearray(b'1234')
+b2 = bytearray(b'5678')
+b3 = bytearray(b'5678')
+m1 = memoryview(b1)
+m2 = memoryview(b2)
+m3 = memoryview(b3)
+m2[1:3] = m1[0:2]
+print(b2)
+b3[1:3] = m1[0:2]
+print(b3)
+m1[2:4] = b3[1:3]
+print(b1)
+
+# invalid slice assignments
+try:
+ m2[1:3] = b1[0:4]
+except ValueError:
+ print("ValueError")
+try:
+ m2[1:3] = m1[0:4]
+except ValueError:
+ print("ValueError")
+try:
+ m2[0:4] = m1[1:3]
+except ValueError:
+ print("ValueError")
+
+# test memoryview of arrays with items sized larger than 1
+a1 = array.array('i', [0]*5)
+m4 = memoryview(a1)
+a2 = array.array('i', [3]*5)
+m5 = memoryview(a2)
+m4[1:3] = m5[1:3]
+print(a1)
+
+try:
+ m4[1:3] = m2[1:3]
+except ValueError:
+ print("ValueError")
+
+# invalid assignment on RHS
+try:
+ memoryview(array.array('i'))[0:2] = b'1234'
+except ValueError:
+ print('ValueError')