Files
RustPython/extra_tests/snippets/deque.py
Alex Muscar cd4216097f fix: __repr__ use collection subclass name
Addresses: https://github.com/RustPython/RustPython/issues/3217

This patch changes the `set`, `frozenset`, `deque` and `bytearray`
collections to use the subclass name in `__repr__`, if they are
subclassed.
2021-10-06 10:01:36 +01:00

96 lines
2.3 KiB
Python

from collections import deque
from typing import Deque
def test_deque_iterator__new__():
klass = type(iter(deque()))
s = 'abcd'
d = klass(deque(s))
assert (list(d) == list(s))
test_deque_iterator__new__()
def test_deque_iterator__new__positional_index():
klass = type(iter(deque()))
# index between 0 and len
for s in ('abcd', range(2000)):
for i in range(len(s)):
d = klass(deque(s), i)
assert (list(d) == list(s)[i:])
# negative index
for s in ('abcd', range(2000)):
for i in range(-1000, 0):
d = klass(deque(s), i)
assert (list(d) == list(s))
# index ge len
for s in ('abcd', range(2000)):
for i in range(len(s), 4000):
d = klass(deque(s), i)
assert (list(d) == list())
test_deque_iterator__new__positional_index()
def test_deque_iterator__new__not_using_keyword_index():
klass = type(iter(deque()))
for s in ('abcd', range(2000)):
for i in range(-1000, 4000):
d = klass(deque(s), index=i)
assert (list(d) == list(s))
test_deque_iterator__new__not_using_keyword_index()
def test_deque_reverse_iterator__new__positional_index():
klass = type(reversed(deque()))
# index between 0 and len
for s in ('abcd', range(2000)):
for i in range(len(s)):
d = klass(deque(s), i)
assert (list(d) == list(reversed(s))[i:])
# negative index
for s in ('abcd', range(2000)):
for i in range(-1000, 0):
d = klass(deque(s), i)
assert (list(d) == list(reversed(s)))
# index ge len
for s in ('abcd', range(2000)):
for i in range(len(s), 4000):
d = klass(deque(s), i)
assert (list(d) == list())
test_deque_reverse_iterator__new__positional_index()
def test_deque_reverse_iterator__new__not_using_keyword_index():
klass = type(reversed(deque()))
for s in ('abcd', range(2000)):
for i in range(-1000, 4000):
d = klass(deque(s), index=i)
assert (list(d) == list(reversed(s)))
test_deque_reverse_iterator__new__not_using_keyword_index()
assert repr(deque()) == "deque([])"
assert repr(deque([1, 2, 3])) == "deque([1, 2, 3])"
class D(deque):
pass
assert repr(D()) == "D([])"
assert repr(D([1, 2, 3])) == "D([1, 2, 3])"