summaryrefslogtreecommitdiff
path: root/tests/basics/deque1.py
diff options
context:
space:
mode:
authorDash Peters <dash.peters@gmail.com>2023-02-11 18:49:15 -0800
committerDamien George <damien@micropython.org>2024-03-18 14:10:14 +1100
commit7dff38fdc190d7b731fad8319d2ae8aa13fde18a (patch)
tree21522a70d61e578e5e8a5dd94ff011736c92f167 /tests/basics/deque1.py
parentcd8eea2ae99542257a33b29c9dfdc02b63fc1bd6 (diff)
py/objdeque: Expand implementation to be doubly-ended and support iter.
Add `pop()`, `appendleft()`, and `extend()` methods, support iteration and indexing, and initializing from an existing sequence. Iteration and indexing (subscription) have independent configuration flags to enable them. They are enabled by default at the same level that collections.deque is enabled (the extra features level). Also add tests for checking new behavior. Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'tests/basics/deque1.py')
-rw-r--r--tests/basics/deque1.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/basics/deque1.py b/tests/basics/deque1.py
index 8b7874e2b..188069bcb 100644
--- a/tests/basics/deque1.py
+++ b/tests/basics/deque1.py
@@ -63,3 +63,52 @@ try:
~d
except TypeError:
print("TypeError")
+
+
+# Same tests, but now with pop() and appendleft()
+
+d = deque((), 2)
+print(len(d))
+print(bool(d))
+
+try:
+ d.popleft()
+except IndexError:
+ print("IndexError")
+
+print(d.append(1))
+print(len(d))
+print(bool(d))
+print(d.popleft())
+print(len(d))
+
+d.append(2)
+print(d.popleft())
+
+d.append(3)
+d.append(4)
+print(len(d))
+print(d.popleft(), d.popleft())
+try:
+ d.popleft()
+except IndexError:
+ print("IndexError")
+
+d.append(5)
+d.append(6)
+d.append(7)
+print(len(d))
+print(d.popleft(), d.popleft())
+print(len(d))
+try:
+ d.popleft()
+except IndexError:
+ print("IndexError")
+
+d = deque((), 2)
+d.appendleft(1)
+d.appendleft(2)
+d.appendleft(3)
+d.appendleft(4)
+d.appendleft(5)
+print(d.pop(), d.pop()) \ No newline at end of file