summaryrefslogtreecommitdiff
path: root/test/round1.test
diff options
context:
space:
mode:
authorCy Schubert <cy@FreeBSD.org>2022-01-05 19:24:29 +0000
committerCy Schubert <cy@FreeBSD.org>2022-01-05 19:24:29 +0000
commit9b0b0740be1f3d3751d366f3bb2952090a9dc505 (patch)
tree596fd97301bf8c0581936cf70bf5f2d58bdb6b80 /test/round1.test
parent0511e356f5e2106928ee352ee974d1470c860a9a (diff)
Diffstat (limited to 'test/round1.test')
-rw-r--r--test/round1.test41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/round1.test b/test/round1.test
new file mode 100644
index 000000000000..ba2c79eabac6
--- /dev/null
+++ b/test/round1.test
@@ -0,0 +1,41 @@
+# 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.
+#
+
+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