summaryrefslogtreecommitdiff
path: root/tests/basics/deque2.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basics/deque2.py')
-rw-r--r--tests/basics/deque2.py64
1 files changed, 56 insertions, 8 deletions
diff --git a/tests/basics/deque2.py b/tests/basics/deque2.py
index 80fcd6678..743c04078 100644
--- a/tests/basics/deque2.py
+++ b/tests/basics/deque2.py
@@ -6,18 +6,50 @@ except ImportError:
print("SKIP")
raise SystemExit
+# Initial sequence is supported
+d = deque([1, 2, 3], 10)
+
+# iteration over sequence
+for x in d:
+ print(x)
+
+# Iterables larger than maxlen have the beginnings removed, also tests
+# iteration through conversion to list
+d = deque([1, 2, 3, 4, 5], 3)
+print(list(d))
+
+# Empty iterables are also supported
+deque([], 10)
+
+# Extending deques with iterables
+d.extend([6, 7])
+print(list(d))
+
+# Accessing queue elements via index
+d = deque((0, 1, 2, 3), 5)
+print(d[0], d[1], d[-1])
+
+# Writing queue elements via index
+d[3] = 5
+print(d[3])
+
+# Accessing indices out of bounds raises IndexError
+try:
+ d[4]
+except IndexError:
+ print("IndexError")
-# Initial sequence is not supported
try:
- deque([1, 2, 3], 10)
-except ValueError:
- print("ValueError")
+ d[4] = 0
+except IndexError:
+ print("IndexError")
-# Not even empty list, only empty tuple
+# Removing elements with del is not supported, fall back on mp_obj_subscr() error message
try:
- deque([], 10)
-except ValueError:
- print("ValueError")
+ del d[0]
+except TypeError:
+ print("TypeError")
+
# Only fixed-size deques are supported, so length arg is mandatory
try:
@@ -32,6 +64,11 @@ try:
except IndexError:
print("IndexError")
+try:
+ d.pop()
+except IndexError:
+ print("IndexError")
+
print(d.append(1))
print(d.popleft())
@@ -46,6 +83,11 @@ try:
except IndexError as e:
print(repr(e))
+try:
+ d.pop()
+except IndexError as e:
+ print(repr(e))
+
d.append(5)
d.append(6)
print(len(d))
@@ -53,6 +95,12 @@ try:
d.append(7)
except IndexError as e:
print(repr(e))
+
+try:
+ d.appendleft(8)
+except IndexError as e:
+ print(repr(e))
+
print(len(d))
print(d.popleft(), d.popleft())