aboutsummaryrefslogtreecommitdiff
path: root/tests/basics
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basics')
-rw-r--r--tests/basics/gen-yield-from-ducktype.py44
-rw-r--r--tests/basics/gen-yield-from-iter.py8
2 files changed, 52 insertions, 0 deletions
diff --git a/tests/basics/gen-yield-from-ducktype.py b/tests/basics/gen-yield-from-ducktype.py
new file mode 100644
index 000000000..aa0109c91
--- /dev/null
+++ b/tests/basics/gen-yield-from-ducktype.py
@@ -0,0 +1,44 @@
+class MyGen:
+
+ def __init__(self):
+ self.v = 0
+
+ def __iter__(self):
+ return self
+
+ def __next__(self):
+ self.v += 1
+ if self.v > 5:
+ raise StopIteration
+ return self.v
+
+def gen():
+ yield from MyGen()
+
+def gen2():
+ yield from gen()
+
+print(list(gen()))
+print(list(gen2()))
+
+
+class Incrementer:
+
+ def __iter__(self):
+ return self
+
+ def __next__(self):
+ return self.send(None)
+
+ def send(self, val):
+ if val is None:
+ return "Incrementer initialized"
+ return val + 1
+
+def gen3():
+ yield from Incrementer()
+
+g = gen3()
+print(next(g))
+print(g.send(5))
+print(g.send(100))
diff --git a/tests/basics/gen-yield-from-iter.py b/tests/basics/gen-yield-from-iter.py
new file mode 100644
index 000000000..2d06328fb
--- /dev/null
+++ b/tests/basics/gen-yield-from-iter.py
@@ -0,0 +1,8 @@
+def gen():
+ yield from (1, 2, 3)
+
+def gen2():
+ yield from gen()
+
+print(list(gen()))
+print(list(gen2()))