summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/float/float_parse_doubleprec.py6
-rw-r--r--tests/micropython/const_error.py2
-rw-r--r--tests/micropython/const_error.py.exp2
-rw-r--r--tests/micropython/const_float.py23
-rw-r--r--tests/micropython/const_float.py.exp4
-rw-r--r--tests/micropython/const_math.py18
-rw-r--r--tests/micropython/const_math.py.exp1
7 files changed, 52 insertions, 4 deletions
diff --git a/tests/float/float_parse_doubleprec.py b/tests/float/float_parse_doubleprec.py
index 81fcadcee..c1b0b4823 100644
--- a/tests/float/float_parse_doubleprec.py
+++ b/tests/float/float_parse_doubleprec.py
@@ -19,3 +19,9 @@ print("%.14e" % float("." + "0" * 400 + "9e400"))
print(float("1.00000000000000000000e-307"))
print(float("10.0000000000000000000e-308"))
print(float("100.000000000000000000e-309"))
+
+# ensure repr() adds an extra digit when needed for accurate parsing
+print(float(repr(float("2.0") ** 100)) == float("2.0") ** 100)
+
+# ensure repr does not add meaningless extra digits (1.234999999999)
+print(repr(1.2345))
diff --git a/tests/micropython/const_error.py b/tests/micropython/const_error.py
index d35be530a..950360e4d 100644
--- a/tests/micropython/const_error.py
+++ b/tests/micropython/const_error.py
@@ -18,8 +18,6 @@ test_syntax("A = const(1); A = const(2)")
# these operations are not supported within const
test_syntax("A = const(1 @ 2)")
-test_syntax("A = const(1 / 2)")
-test_syntax("A = const(1 ** -2)")
test_syntax("A = const(1 << -2)")
test_syntax("A = const(1 >> -2)")
test_syntax("A = const(1 % 0)")
diff --git a/tests/micropython/const_error.py.exp b/tests/micropython/const_error.py.exp
index 3edc3efe9..bef69eb32 100644
--- a/tests/micropython/const_error.py.exp
+++ b/tests/micropython/const_error.py.exp
@@ -5,5 +5,3 @@ SyntaxError
SyntaxError
SyntaxError
SyntaxError
-SyntaxError
-SyntaxError
diff --git a/tests/micropython/const_float.py b/tests/micropython/const_float.py
new file mode 100644
index 000000000..c3a0df027
--- /dev/null
+++ b/tests/micropython/const_float.py
@@ -0,0 +1,23 @@
+# test constant optimisation, with consts that are floats
+
+from micropython import const
+
+# check we can make consts from floats
+F1 = const(2.5)
+F2 = const(-0.3)
+print(type(F1), F1)
+print(type(F2), F2)
+
+# check arithmetic with floats
+F3 = const(F1 + F2)
+F4 = const(F1**2)
+print(F3, F4)
+
+# check int operations with float results
+F5 = const(1 / 2)
+F6 = const(2**-2)
+print(F5, F6)
+
+# note: we also test float expression folding when
+# we're compiling test cases in tests/float, as
+# many expressions are resolved at compile time.
diff --git a/tests/micropython/const_float.py.exp b/tests/micropython/const_float.py.exp
new file mode 100644
index 000000000..17a86a6d9
--- /dev/null
+++ b/tests/micropython/const_float.py.exp
@@ -0,0 +1,4 @@
+<class 'float'> 2.5
+<class 'float'> -0.3
+2.2 6.25
+0.5 0.25
diff --git a/tests/micropython/const_math.py b/tests/micropython/const_math.py
new file mode 100644
index 000000000..7ee5edc6d
--- /dev/null
+++ b/tests/micropython/const_math.py
@@ -0,0 +1,18 @@
+# Test expressions based on math module constants
+try:
+ import math
+except ImportError:
+ print("SKIP")
+ raise SystemExit
+
+from micropython import const
+
+# check that we can make consts from math constants
+# (skip if the target has MICROPY_COMP_MODULE_CONST disabled)
+try:
+ exec("two_pi = const(2.0 * math.pi)")
+except SyntaxError:
+ print("SKIP")
+ raise SystemExit
+
+print(math.cos(two_pi))
diff --git a/tests/micropython/const_math.py.exp b/tests/micropython/const_math.py.exp
new file mode 100644
index 000000000..d3827e75a
--- /dev/null
+++ b/tests/micropython/const_math.py.exp
@@ -0,0 +1 @@
+1.0