From 2f2a8438b55acba2cc98cbc9de8eb9cfb79a583e Mon Sep 17 00:00:00 2001 From: Adrian Wielgosik Date: Mon, 1 Apr 2019 19:42:30 +0200 Subject: [PATCH] Add iterable tests --- tests/snippets/iterable.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tests/snippets/iterable.py diff --git a/tests/snippets/iterable.py b/tests/snippets/iterable.py new file mode 100644 index 000000000..45bb1cf4d --- /dev/null +++ b/tests/snippets/iterable.py @@ -0,0 +1,32 @@ +from testutils import assert_raises + +def test_container(x): + assert 3 in x + assert 4 not in x + assert list(x) == list(iter(x)) + assert list(x) == [0, 1, 2, 3] + assert [*x] == [0, 1, 2, 3] + lst = [] + lst.extend(x) + assert lst == [0, 1, 2, 3] + +class C: + def __iter__(self): + return iter([0, 1, 2, 3]) +test_container(C()) + +class C: + def __getitem__(self, x): + return (0, 1, 2, 3)[x] # raises IndexError on x==4 +test_container(C()) + +class C: + def __getitem__(self, x): + if x > 3: + raise StopIteration + return x +test_container(C()) + +class C: pass +assert_raises(TypeError, lambda: 5 in C()) +assert_raises(TypeError, lambda: iter(C))