summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-04-04 23:16:22 +0100
committerDamien George <damien.p.george@gmail.com>2015-04-04 23:16:22 +0100
commit97abe22963af5b62656cef5a46c195215f75f7d2 (patch)
tree40929dd2cac2ee1e03af4edd5d3fb870f9ac989f
parent9dd36404646f857c4f250537bac0d9a8ad041d25 (diff)
downloadmicropython-97abe22963af5b62656cef5a46c195215f75f7d2.tar.gz
micropython-97abe22963af5b62656cef5a46c195215f75f7d2.zip
tests: Add tests to exercise lexer; and some more complex number tests.
-rw-r--r--tests/basics/bytes.py8
-rw-r--r--tests/basics/lexer.py40
-rw-r--r--tests/basics/string1.py14
-rw-r--r--tests/basics/syntaxerror.py19
-rw-r--r--tests/float/complex1.py37
-rw-r--r--tests/float/float1.py5
6 files changed, 121 insertions, 2 deletions
diff --git a/tests/basics/bytes.py b/tests/basics/bytes.py
index 2dafad49b8..d3da15c8e9 100644
--- a/tests/basics/bytes.py
+++ b/tests/basics/bytes.py
@@ -1,4 +1,12 @@
+# literals
+print(b'123')
+print(br'123')
+print(rb'123')
+print(b'\u1234')
+
+# construction
print(bytes())
+print(bytes(b'abc'))
a = b"123"
print(a)
diff --git a/tests/basics/lexer.py b/tests/basics/lexer.py
new file mode 100644
index 0000000000..1057c3961b
--- /dev/null
+++ b/tests/basics/lexer.py
@@ -0,0 +1,40 @@
+# test the lexer
+
+# __debug__ is a special symbol
+print(type(__debug__))
+
+# short input
+exec("")
+exec("\n")
+exec("\n\n")
+exec("\r")
+exec("\r\r")
+print(eval("1"))
+print(eval("12"))
+print(eval("123"))
+print(eval("1\n"))
+print(eval("12\n"))
+print(eval("123\n"))
+print(eval("1\r"))
+print(eval("12\r"))
+print(eval("123\r"))
+
+# lots of indentation
+def a(x):
+ if x:
+ if x:
+ if x:
+ if x:
+ if x:
+ if x:
+ if x:
+ if x:
+ if x:
+ if x:
+ if x:
+ if x:
+ if x:
+ if x:
+ if x:
+ print(x)
+a(1)
diff --git a/tests/basics/string1.py b/tests/basics/string1.py
index f58fcd401a..8d5f4618dc 100644
--- a/tests/basics/string1.py
+++ b/tests/basics/string1.py
@@ -1,17 +1,27 @@
# basic strings
+# literals
+print('abc')
+print(r'abc')
+print(u'abc')
+print(repr('\a\b\t\n\v\f\r'))
+print('\z') # unrecognised escape char
+
+# construction
print(str())
+print(str('abc'))
+# inplace addition
x = 'abc'
print(x)
-
x += 'def'
print(x)
+# binary ops
print('123' + "456")
-
print('123' * 5)
+# subscription
print('abc'[1])
print('abc'[-1])
try:
diff --git a/tests/basics/syntaxerror.py b/tests/basics/syntaxerror.py
index f53b2c41d2..fc8b92d39e 100644
--- a/tests/basics/syntaxerror.py
+++ b/tests/basics/syntaxerror.py
@@ -4,9 +4,28 @@ def test_syntax(code):
try:
exec(code)
print("no SyntaxError")
+ except IndentationError:
+ print("IndentationError")
except SyntaxError:
print("SyntaxError")
+# non-newline after line-continuation character (lexer error)
+test_syntax("a \\a\n")
+
+# dedent mismatch (lexer error)
+test_syntax("def f():\n a\n a\n")
+
+# unclosed string (lexer error)
+test_syntax("'abc")
+
+# invalid (lexer error)
+test_syntax("!")
+test_syntax("$")
+test_syntax("`")
+
+# bad indentation (lexer error)
+test_syntax(" a\n")
+
# can't assign to literals
test_syntax("1 = 2")
test_syntax("'' = 1")
diff --git a/tests/float/complex1.py b/tests/float/complex1.py
index 2fb95c6908..2395271090 100644
--- a/tests/float/complex1.py
+++ b/tests/float/complex1.py
@@ -25,10 +25,17 @@ print(1j - 2j)
print(1j * 2)
print(1j * 2j)
print(1j / 2)
+print((1j / 2j).real)
print(1j / (1 + 2j))
+ans = 0j ** 0; print("%.5g %.5g" % (ans.real, ans.imag))
+ans = 0j ** 0j; print("%.5g %.5g" % (ans.real, ans.imag))
ans = 1j ** 2.5; print("%.5g %.5g" % (ans.real, ans.imag))
ans = 1j ** 2.5j; print("%.5g %.5g" % (ans.real, ans.imag))
+# comparison
+print(1j == 1)
+print(1j == 1j)
+
# builtin abs
print(abs(1j))
print("%.5g" % abs(1j + 2))
@@ -44,3 +51,33 @@ try:
1j + []
except TypeError:
print("TypeError")
+
+# unsupported unary op
+try:
+ ~(1j)
+except TypeError:
+ print("TypeError")
+
+# unsupported binary op
+try:
+ 1j // 2
+except TypeError:
+ print("TypeError")
+
+# unsupported binary op
+try:
+ 1j < 2j
+except TypeError:
+ print("TypeError")
+
+# zero division
+try:
+ 1j / 0
+except ZeroDivisionError:
+ print("ZeroDivisionError")
+
+# zero division via power
+try:
+ 0j ** 1j
+except ZeroDivisionError:
+ print("ZeroDivisionError")
diff --git a/tests/float/float1.py b/tests/float/float1.py
index 2539d89dc3..bb670586ae 100644
--- a/tests/float/float1.py
+++ b/tests/float/float1.py
@@ -1,5 +1,10 @@
# test basic float capabilities
+# literals
+print(.12)
+print(1.)
+print(1.2)
+
# float construction
print(float(1.2))