summaryrefslogtreecommitdiffstats
path: root/test/round1.test
diff options
context:
space:
mode:
Diffstat (limited to 'test/round1.test')
-rw-r--r--test/round1.test42
1 files changed, 42 insertions, 0 deletions
diff --git a/test/round1.test b/test/round1.test
new file mode 100644
index 0000000..2244a39
--- /dev/null
+++ b/test/round1.test
@@ -0,0 +1,42 @@
+# 2019-05-24
+#
+# The author disclaims copyright to this source code. In place of
+# a legal notice, here is a blessing:
+#
+# May you do good and not evil.
+# May you find forgiveness for yourself and forgive others.
+# May you share freely, never taking more than you give.
+#
+#***********************************************************************
+# Test cases for rounding behavior of floating point values.
+#
+# TESTRUNNER: slow
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+set testprefix round1
+
+expr srand(0)
+unset -nocomplain iTest
+for {set iTest 1} {$iTest<=50000} {incr iTest} {
+ set x1 [expr int(rand()*100000)]
+ set x2 [expr int(rand()*100000)+1000*int(rand()*10000)]
+ set n [expr int(rand()*8)+1]
+ set x3 [string range [format %09d $x2] [expr {9-$n}] end]
+ set r $x1.$x3
+ set ans [string trimright $r 0]
+ if {[string match *. $ans]} {set ans ${ans}0}
+ do_test $iTest/$n/${r}4=>$ans {
+ set x [db one "SELECT round(${r}4,$n)"]
+ } $ans
+ set x4 [string range [format %09d [expr {$x2+1}]] [expr {9-$n}] end]
+ if {[string trim $x3 9]==""} {incr x1}
+ set r2 $x1.$x4
+ set ans [string trimright $r2 0]
+ if {[string match *. $ans]} {set ans ${ans}0}
+ do_test $iTest/$n/${r}5=>$ans {
+ set x [db one "SELECT round(${r}5,$n)"]
+ } $ans
+}
+
+finish_test