summaryrefslogtreecommitdiffstatshomepage
path: root/tests
diff options
context:
space:
mode:
authorDelio Brignoli <brignoli.delio@gmail.com>2015-06-03 07:07:35 +0200
committerDamien George <damien.p.george@gmail.com>2015-07-20 15:53:22 +0100
commit32aba40830320867bdddcf4e0a6658b9df49ac9a (patch)
tree102158f055113b6d44a39528a0a5f30a042281ba /tests
parentf576057274abb2a73e2407a34366e78a1f2ef4f2 (diff)
downloadmicropython-32aba40830320867bdddcf4e0a6658b9df49ac9a.tar.gz
micropython-32aba40830320867bdddcf4e0a6658b9df49ac9a.zip
py: Implement memoryview slice assignment.
Adds ability to do "memcpy" with memoryview objects, such as: m1[0:3] = m2[2:5].
Diffstat (limited to 'tests')
-rw-r--r--tests/basics/memoryview1.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/basics/memoryview1.py b/tests/basics/memoryview1.py
index 2033f4ac2e..862a573e84 100644
--- a/tests/basics/memoryview1.py
+++ b/tests/basics/memoryview1.py
@@ -36,3 +36,45 @@ print(list(m))
print(list(m[1:-1]))
m[2] = 6
print(a)
+
+# 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)
+
+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")