summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics/op_error.py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-03-25 23:10:09 +0000
committerDamien George <damien.p.george@gmail.com>2015-03-25 23:10:09 +0000
commit214179b430ebc1101e28b19248b6166f5e511e6b (patch)
tree74f8dc7b2e9dbfd902514b82a698e9ddaa8bb4bc /tests/basics/op_error.py
parent44f65c0e2f5ce27ce90bbec218ecb39cba9d75a2 (diff)
downloadmicropython-214179b430ebc1101e28b19248b6166f5e511e6b.tar.gz
micropython-214179b430ebc1101e28b19248b6166f5e511e6b.zip
tests: Add tests for SyntaxError, TypeError, and other missing things.
This is intended to improve coverage of the test suite.
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 0000000000..cfd6ffa8c4
--- /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)