/fiddle: reorder/replace example entries to make them more coherent when tried in...
[sqlite.git] / test / round1.test
blob2857593be8e3771d02eb2cc750b2628933141dcd
1 # 2019-05-24
3 # The author disclaims copyright to this source code.  In place of
4 # a legal notice, here is a blessing:
6 #    May you do good and not evil.
7 #    May you find forgiveness for yourself and forgive others.
8 #    May you share freely, never taking more than you give.
10 #***********************************************************************
11 # Test cases for rounding behavior of floating point values.
13 # TESTRUNNER: slow
15 set testdir [file dirname $argv0]
16 source $testdir/tester.tcl
17 set testprefix round1
19 expr srand(0)
20 unset -nocomplain iTest
21 for {set iTest 1} {$iTest<=50000} {incr iTest} {
22    set x1 [expr int(rand()*100000)]
23    set x2 [expr int(rand()*100000)+1000*int(rand()*10000)]
24    set n [expr int(rand()*8)+1]
25    set x3 [string range [format %09d $x2] [expr {9-$n}] end]
26    set r $x1.$x3
27    set ans [string trimright $r 0]
28    if {[string match *. $ans]} {set ans ${ans}0}
29    do_test $iTest/$n/${r}4=>$ans {
30      set x [db one "SELECT round(${r}4,$n)"]
31    } $ans
32    set x4 [string range [format %09d [expr {$x2+1}]] [expr {9-$n}] end]
33    if {[string trim $x3 9]==""} {incr x1}
34    set r2 $x1.$x4
35    set ans [string trimright $r2 0]
36    if {[string match *. $ans]} {set ans ${ans}0}
37    do_test $iTest/$n/${r}6=>$ans {
38      set x [db one "SELECT round(${r}6,$n)"]
39    } $ans
42 finish_test