Index: third_party/sqlite/src/test/func.test |
diff --git a/third_party/sqlite/src/test/func.test b/third_party/sqlite/src/test/func.test |
index 91ae0a59250141cb8e08985c9b8c0aac051cf9a4..eef05439861b81e924aaaedf5e048284d7bcac17 100644 |
--- a/third_party/sqlite/src/test/func.test |
+++ b/third_party/sqlite/src/test/func.test |
@@ -235,6 +235,85 @@ ifcapable floatingpoint { |
do_test func-4.16 { |
catchsql {SELECT round(b,2.0) FROM t1 ORDER BY b} |
} {0 {-2.0 1.23 2.0}} |
+ # Verify some values reported on the mailing list. |
+ # Some of these fail on MSVC builds with 64-bit |
+ # long doubles, but not on GCC builds with 80-bit |
+ # long doubles. |
+ for {set i 1} {$i<999} {incr i} { |
+ set x1 [expr 40222.5 + $i] |
+ set x2 [expr 40223.0 + $i] |
+ do_test func-4.17.$i { |
+ execsql {SELECT round($x1);} |
+ } $x2 |
+ } |
+ for {set i 1} {$i<999} {incr i} { |
+ set x1 [expr 40222.05 + $i] |
+ set x2 [expr 40222.10 + $i] |
+ do_test func-4.18.$i { |
+ execsql {SELECT round($x1,1);} |
+ } $x2 |
+ } |
+ do_test func-4.20 { |
+ execsql {SELECT round(40223.4999999999);} |
+ } {40223.0} |
+ do_test func-4.21 { |
+ execsql {SELECT round(40224.4999999999);} |
+ } {40224.0} |
+ do_test func-4.22 { |
+ execsql {SELECT round(40225.4999999999);} |
+ } {40225.0} |
+ for {set i 1} {$i<10} {incr i} { |
+ do_test func-4.23.$i { |
+ execsql {SELECT round(40223.4999999999,$i);} |
+ } {40223.5} |
+ do_test func-4.24.$i { |
+ execsql {SELECT round(40224.4999999999,$i);} |
+ } {40224.5} |
+ do_test func-4.25.$i { |
+ execsql {SELECT round(40225.4999999999,$i);} |
+ } {40225.5} |
+ } |
+ for {set i 10} {$i<32} {incr i} { |
+ do_test func-4.26.$i { |
+ execsql {SELECT round(40223.4999999999,$i);} |
+ } {40223.4999999999} |
+ do_test func-4.27.$i { |
+ execsql {SELECT round(40224.4999999999,$i);} |
+ } {40224.4999999999} |
+ do_test func-4.28.$i { |
+ execsql {SELECT round(40225.4999999999,$i);} |
+ } {40225.4999999999} |
+ } |
+ do_test func-4.29 { |
+ execsql {SELECT round(1234567890.5);} |
+ } {1234567891.0} |
+ do_test func-4.30 { |
+ execsql {SELECT round(12345678901.5);} |
+ } {12345678902.0} |
+ do_test func-4.31 { |
+ execsql {SELECT round(123456789012.5);} |
+ } {123456789013.0} |
+ do_test func-4.32 { |
+ execsql {SELECT round(1234567890123.5);} |
+ } {1234567890124.0} |
+ do_test func-4.33 { |
+ execsql {SELECT round(12345678901234.5);} |
+ } {12345678901235.0} |
+ do_test func-4.34 { |
+ execsql {SELECT round(1234567890123.35,1);} |
+ } {1234567890123.4} |
+ do_test func-4.35 { |
+ execsql {SELECT round(1234567890123.445,2);} |
+ } {1234567890123.45} |
+ do_test func-4.36 { |
+ execsql {SELECT round(99999999999994.5);} |
+ } {99999999999995.0} |
+ do_test func-4.37 { |
+ execsql {SELECT round(9999999999999.55,1);} |
+ } {9999999999999.6} |
+ do_test func-4.38 { |
+ execsql {SELECT round(9999999999999.555,2);} |
+ } {9999999999999.56} |
} |
# Test the upper() and lower() functions |