summaryrefslogtreecommitdiff
path: root/tests/basics/op_error.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basics/op_error.py')
-rw-r--r--tests/basics/op_error.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/basics/op_error.py b/tests/basics/op_error.py
new file mode 100644
index 000000000..cfd6ffa8c
--- /dev/null
+++ b/tests/basics/op_error.py
@@ -0,0 +1,43 @@
+# test errors from bad operations (unary, binary, etc)
+
+def test_exc(code, exc):
+ try:
+ exec(code)
+ print("no exception")
+ except exc:
+ print("right exception")
+ except:
+ print("wrong exception")
+
+# unsupported unary operators
+test_exc("~None", TypeError)
+test_exc("~[]", TypeError)
+test_exc("~bytearray()", TypeError)
+
+# unsupported binary operators
+test_exc("False in True", TypeError)
+test_exc("1 * {}", TypeError)
+test_exc("1 in 1", TypeError)
+test_exc("bytearray() // 2", TypeError)
+test_exc("m = memoryview(bytearray())\nm += bytearray()", TypeError)
+
+# object with buffer protocol needed on rhs
+test_exc("bytearray(1) + 1", TypeError)
+test_exc("(1 << 70) in 1", TypeError)
+
+# unsupported subscription
+test_exc("1[0]", TypeError)
+test_exc("1[0] = 1", TypeError)
+test_exc("del 1[0]", TypeError)
+
+# not callable
+test_exc("1()", TypeError)
+
+# not an iterator
+test_exc("next(1)", TypeError)
+
+# must be an exception type
+test_exc("raise 1", TypeError)
+
+# no such name in import
+test_exc("from sys import youcannotimportmebecauseidontexist", ImportError)