summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basics')
-rw-r--r--tests/basics/gen_yield_from_close.py22
-rw-r--r--tests/basics/int_big_add.py11
-rw-r--r--tests/basics/iter1.py9
-rw-r--r--tests/basics/try2.py9
4 files changed, 51 insertions, 0 deletions
diff --git a/tests/basics/gen_yield_from_close.py b/tests/basics/gen_yield_from_close.py
index 674e117a08..d66691ff9c 100644
--- a/tests/basics/gen_yield_from_close.py
+++ b/tests/basics/gen_yield_from_close.py
@@ -99,3 +99,25 @@ try:
g.close()
except RuntimeError:
print('RuntimeError')
+
+# case where close is propagated up to a built-in iterator
+def gen8():
+ g = reversed([2, 1])
+ yield from g
+g = gen8()
+print(next(g))
+g.close()
+
+# case with a user-defined close method
+class Iter:
+ def __iter__(self):
+ return self
+ def __next__(self):
+ return 1
+ def close(self):
+ print('close')
+def gen9():
+ yield from Iter()
+g = gen9()
+print(next(g))
+g.close()
diff --git a/tests/basics/int_big_add.py b/tests/basics/int_big_add.py
new file mode 100644
index 0000000000..f0c3336d05
--- /dev/null
+++ b/tests/basics/int_big_add.py
@@ -0,0 +1,11 @@
+# tests transition from small to large int representation by addition
+
+# 31-bit overflow
+i = 0x3fffffff
+print(i + i)
+print(-i + -i)
+
+# 63-bit overflow
+i = 0x3fffffffffffffff
+print(i + i)
+print(-i + -i)
diff --git a/tests/basics/iter1.py b/tests/basics/iter1.py
index 5bd7f5090b..9117dfd2b7 100644
--- a/tests/basics/iter1.py
+++ b/tests/basics/iter1.py
@@ -9,6 +9,15 @@ try:
except TypeError:
print('TypeError')
+# this class has no __next__ implementation
+class NotIterable:
+ def __iter__(self):
+ return self
+try:
+ print(all(NotIterable()))
+except TypeError:
+ print('TypeError')
+
class MyStopIteration(StopIteration):
pass
diff --git a/tests/basics/try2.py b/tests/basics/try2.py
index 5827699e90..11e60b3c22 100644
--- a/tests/basics/try2.py
+++ b/tests/basics/try2.py
@@ -22,6 +22,15 @@ try:
except NameError:
print("except 1")
+# raised exception not contained in except tuple
+try:
+ try:
+ raise Exception
+ except (RuntimeError, SyntaxError):
+ print('except 2')
+except Exception:
+ print('except 1')
+
# Check that exceptions across function boundaries work as expected
def func1():
try: