summaryrefslogtreecommitdiff
path: root/tests/extmod/ticks_add.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/extmod/ticks_add.py')
-rw-r--r--tests/extmod/ticks_add.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/extmod/ticks_add.py b/tests/extmod/ticks_add.py
new file mode 100644
index 000000000..2f1ba6c81
--- /dev/null
+++ b/tests/extmod/ticks_add.py
@@ -0,0 +1,42 @@
+try:
+ from utime import ticks_diff, ticks_add
+except ImportError:
+ print("SKIP")
+ raise SystemExit
+
+# Maximum value returned from ticks_add, ticks_ms, etc.
+TICKS_MAX = ticks_add(0, -1)
+# Maximum value returned from ticks_diff.
+TICKS_INTERVAL_MAX = TICKS_MAX // 2
+
+# Invariants:
+# - ticks_diff(ticks_add(T, delta), T) == delta
+# - ticks_diff(T, ticks_add(T, delta)) == -delta
+
+# Check actual values of ticks_add.
+print(ticks_add(20, 12))
+print(ticks_add(20, -12))
+
+# Check invariant.
+print(ticks_diff(ticks_add(100, 123), 100))
+print(ticks_diff(ticks_add(100, -123), 100))
+print(ticks_diff(100, ticks_add(100, 123)))
+print(ticks_diff(100, ticks_add(100, -123)))
+
+# Check limits.
+for T in (0, 10, TICKS_MAX):
+ for delta in (
+ -TICKS_INTERVAL_MAX - 1,
+ -TICKS_INTERVAL_MAX,
+ 0,
+ TICKS_INTERVAL_MAX,
+ TICKS_INTERVAL_MAX + 1,
+ ):
+ try:
+ print(ticks_diff(ticks_add(T, delta), T) == delta)
+ except OverflowError:
+ print("OverflowError")
+ try:
+ print(ticks_diff(T, ticks_add(T, delta)) == -delta)
+ except OverflowError:
+ print("OverflowError")