1# Tests for deques with "check overflow" flag and other extensions
2# wrt to CPython.
3try:
4    try:
5        from ucollections import deque
6    except ImportError:
7        from collections import deque
8except ImportError:
9    print("SKIP")
10    raise SystemExit
11
12
13# Initial sequence is not supported
14try:
15    deque([1, 2, 3], 10)
16except ValueError:
17    print("ValueError")
18
19# Not even empty list, only empty tuple
20try:
21    deque([], 10)
22except ValueError:
23    print("ValueError")
24
25# Only fixed-size deques are supported, so length arg is mandatory
26try:
27    deque(())
28except TypeError:
29    print("TypeError")
30
31d = deque((), 2, True)
32
33try:
34    d.popleft()
35except IndexError:
36    print("IndexError")
37
38print(d.append(1))
39print(d.popleft())
40
41d.append(2)
42print(d.popleft())
43
44d.append(3)
45d.append(4)
46print(d.popleft(), d.popleft())
47try:
48    d.popleft()
49except IndexError as e:
50    print(repr(e))
51
52d.append(5)
53d.append(6)
54print(len(d))
55try:
56    d.append(7)
57except IndexError as e:
58    print(repr(e))
59print(len(d))
60
61print(d.popleft(), d.popleft())
62print(len(d))
63try:
64    d.popleft()
65except IndexError as e:
66    print(repr(e))
67