diff options
author | Damien George <damien.p.george@gmail.com> | 2014-03-26 18:46:06 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-03-26 18:46:06 +0000 |
commit | 752ba554ccb25a798e5279858ea8aac4af77cc1e (patch) | |
tree | ee058c8d8d17d069e32f5ae70ed508b9303b1d29 /tests/basics | |
parent | 9e6e935df0583fa761148a659181813ca532cb56 (diff) | |
parent | 962b1cd1b120d777636ce8195d14f3d686e96619 (diff) | |
download | micropython-752ba554ccb25a798e5279858ea8aac4af77cc1e.tar.gz micropython-752ba554ccb25a798e5279858ea8aac4af77cc1e.zip |
Merge branch 'gen-close-ret-val' of github.com:pfalcon/micropython into pfalcon-gen-close-ret-val
Diffstat (limited to 'tests/basics')
-rw-r--r-- | tests/basics/generator-return.py | 10 | ||||
-rw-r--r-- | tests/basics/generator_close.py | 59 |
2 files changed, 69 insertions, 0 deletions
diff --git a/tests/basics/generator-return.py b/tests/basics/generator-return.py new file mode 100644 index 0000000000..a3ac88575e --- /dev/null +++ b/tests/basics/generator-return.py @@ -0,0 +1,10 @@ +def gen(): + yield 1 + return 42 + +g = gen() +print(next(g)) +try: + print(next(g)) +except StopIteration as e: + print(repr(e)) diff --git a/tests/basics/generator_close.py b/tests/basics/generator_close.py new file mode 100644 index 0000000000..aa563f2a8a --- /dev/null +++ b/tests/basics/generator_close.py @@ -0,0 +1,59 @@ +def gen1(): + yield 1 + yield 2 + +# Test that it's possible to close just created gen +g = gen1() +print(g.close()) +try: + next(g) +except StopIteration: + print("StopIteration") + +# Test that it's possible to close gen in progress +g = gen1() +print(next(g)) +print(g.close()) +try: + next(g) + print("No StopIteration") +except StopIteration: + print("StopIteration") + +# Test that it's possible to close finished gen +g = gen1() +print(list(g)) +print(g.close()) +try: + next(g) + print("No StopIteration") +except StopIteration: + print("StopIteration") + + +# Throwing StopIteration in response to close() is ok +def gen2(): + try: + yield 1 + yield 2 + except: + raise StopIteration + +g = gen2() +next(g) +print(g.close()) + +# Any other exception is propagated to the .close() caller +def gen3(): + try: + yield 1 + yield 2 + except: + raise ValueError + +g = gen3() +next(g) +try: + print(g.close()) +except ValueError: + print("ValueError") |