summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/basics/gen_yield_from_throw_repeat.py22
-rw-r--r--tests/basics/generator_throw_repeat.py16
2 files changed, 38 insertions, 0 deletions
diff --git a/tests/basics/gen_yield_from_throw_repeat.py b/tests/basics/gen_yield_from_throw_repeat.py
new file mode 100644
index 000000000..96636a624
--- /dev/null
+++ b/tests/basics/gen_yield_from_throw_repeat.py
@@ -0,0 +1,22 @@
+# Test throwing repeatedly into the same generator, where that generator
+# is yielding from another generator.
+
+
+def yielder():
+ yield 4
+ yield 5
+
+
+def gen():
+ while True:
+ try:
+ print("gen received:", (yield from yielder()))
+ except ValueError as exc:
+ print(repr(exc))
+
+
+g = gen()
+for i in range(2):
+ print("send, got:", g.send(None))
+ print("throw, got:", g.throw(ValueError("a", i)))
+ print("throw, got:", g.throw(ValueError("b", i)))
diff --git a/tests/basics/generator_throw_repeat.py b/tests/basics/generator_throw_repeat.py
new file mode 100644
index 000000000..6d6ef60a9
--- /dev/null
+++ b/tests/basics/generator_throw_repeat.py
@@ -0,0 +1,16 @@
+# Test throwing repeatedly into the same generator.
+
+
+def gen():
+ while True:
+ try:
+ print("gen received:", (yield "value"))
+ except ValueError as exc:
+ print(repr(exc))
+
+
+g = gen()
+for i in range(2):
+ print("send, got:", g.send(None))
+ print("throw, got:", g.throw(ValueError("a", i)))
+ print("throw, got:", g.throw(ValueError("b", i)))