Index: third_party/sqlite/src/test/func4.test |
diff --git a/third_party/sqlite/src/test/func4.test b/third_party/sqlite/src/test/func4.test |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e94f8c3418fde2adf8261199fe16fff86e303d24 |
--- /dev/null |
+++ b/third_party/sqlite/src/test/func4.test |
@@ -0,0 +1,758 @@ |
+# 2013 March 10 |
+# |
+# 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. |
+# |
+#*********************************************************************** |
+# This file implements regression tests for SQLite library. The focus of |
+# this file is testing the tointeger() and toreal() functions. |
+# |
+# Several of the toreal() tests are disabled on platforms where floating |
+# point precision is not high enough to represent their constant integer |
+# expression arguments as double precision floating point values. |
+# |
+set testdir [file dirname $argv0] |
+source $testdir/tester.tcl |
+set saved_tcl_precision $tcl_precision |
+set tcl_precision 0 |
+load_static_extension db totype |
+ |
+set highPrecision(1) [expr \ |
+ {[db eval {SELECT tointeger(9223372036854775807 + 1);}] eq {{}}}] |
+ |
+do_execsql_test func4-1.1 { |
+ SELECT tointeger(NULL); |
+} {{}} |
+do_execsql_test func4-1.2 { |
+ SELECT tointeger(''); |
+} {{}} |
+do_execsql_test func4-1.3 { |
+ SELECT tointeger(' '); |
+} {{}} |
+do_execsql_test func4-1.4 { |
+ SELECT tointeger('1234'); |
+} {1234} |
+do_execsql_test func4-1.5 { |
+ SELECT tointeger(' 1234'); |
+} {{}} |
+do_execsql_test func4-1.6 { |
+ SELECT tointeger('bad'); |
+} {{}} |
+do_execsql_test func4-1.7 { |
+ SELECT tointeger('0xBAD'); |
+} {{}} |
+do_execsql_test func4-1.8 { |
+ SELECT tointeger('123BAD'); |
+} {{}} |
+do_execsql_test func4-1.9 { |
+ SELECT tointeger('0x123BAD'); |
+} {{}} |
+do_execsql_test func4-1.10 { |
+ SELECT tointeger('123NO'); |
+} {{}} |
+do_execsql_test func4-1.11 { |
+ SELECT tointeger('0x123NO'); |
+} {{}} |
+do_execsql_test func4-1.12 { |
+ SELECT tointeger('-0x1'); |
+} {{}} |
+do_execsql_test func4-1.13 { |
+ SELECT tointeger('-0x0'); |
+} {{}} |
+do_execsql_test func4-1.14 { |
+ SELECT tointeger('0x0'); |
+} {{}} |
+do_execsql_test func4-1.15 { |
+ SELECT tointeger('0x1'); |
+} {{}} |
+do_execsql_test func4-1.16 { |
+ SELECT tointeger(-1); |
+} {-1} |
+do_execsql_test func4-1.17 { |
+ SELECT tointeger(-0); |
+} {0} |
+do_execsql_test func4-1.18 { |
+ SELECT tointeger(0); |
+} {0} |
+do_execsql_test func4-1.19 { |
+ SELECT tointeger(1); |
+} {1} |
+do_execsql_test func4-1.20 { |
+ SELECT tointeger(-1.79769313486232e308 - 1); |
+} {{}} |
+do_execsql_test func4-1.21 { |
+ SELECT tointeger(-1.79769313486232e308); |
+} {{}} |
+do_execsql_test func4-1.22 { |
+ SELECT tointeger(-1.79769313486232e308 + 1); |
+} {{}} |
+do_execsql_test func4-1.23 { |
+ SELECT tointeger(-9223372036854775808 - 1); |
+} {-9223372036854775808} |
+do_execsql_test func4-1.24 { |
+ SELECT tointeger(-9223372036854775808); |
+} {-9223372036854775808} |
+do_execsql_test func4-1.25 { |
+ SELECT tointeger(-9223372036854775808 + 1); |
+} {-9223372036854775807} |
+do_execsql_test func4-1.26 { |
+ SELECT tointeger(-9223372036854775807 - 1); |
+} {-9223372036854775808} |
+do_execsql_test func4-1.27 { |
+ SELECT tointeger(-9223372036854775807); |
+} {-9223372036854775807} |
+do_execsql_test func4-1.28 { |
+ SELECT tointeger(-9223372036854775807 + 1); |
+} {-9223372036854775806} |
+do_execsql_test func4-1.29 { |
+ SELECT tointeger(-2147483648 - 1); |
+} {-2147483649} |
+do_execsql_test func4-1.30 { |
+ SELECT tointeger(-2147483648); |
+} {-2147483648} |
+do_execsql_test func4-1.31 { |
+ SELECT tointeger(-2147483648 + 1); |
+} {-2147483647} |
+do_execsql_test func4-1.32 { |
+ SELECT tointeger(2147483647 - 1); |
+} {2147483646} |
+do_execsql_test func4-1.33 { |
+ SELECT tointeger(2147483647); |
+} {2147483647} |
+do_execsql_test func4-1.34 { |
+ SELECT tointeger(2147483647 + 1); |
+} {2147483648} |
+do_execsql_test func4-1.35 { |
+ SELECT tointeger(9223372036854775807 - 1); |
+} {9223372036854775806} |
+do_execsql_test func4-1.36 { |
+ SELECT tointeger(9223372036854775807); |
+} {9223372036854775807} |
+if {$highPrecision(1)} { |
+ do_execsql_test func4-1.37 { |
+ SELECT tointeger(9223372036854775807 + 1); |
+ } {{}} |
+} |
+do_execsql_test func4-1.38 { |
+ SELECT tointeger(1.79769313486232e308 - 1); |
+} {{}} |
+do_execsql_test func4-1.39 { |
+ SELECT tointeger(1.79769313486232e308); |
+} {{}} |
+do_execsql_test func4-1.40 { |
+ SELECT tointeger(1.79769313486232e308 + 1); |
+} {{}} |
+do_execsql_test func4-1.41 { |
+ SELECT tointeger(4503599627370496 - 1); |
+} {4503599627370495} |
+do_execsql_test func4-1.42 { |
+ SELECT tointeger(4503599627370496); |
+} {4503599627370496} |
+do_execsql_test func4-1.43 { |
+ SELECT tointeger(4503599627370496 + 1); |
+} {4503599627370497} |
+do_execsql_test func4-1.44 { |
+ SELECT tointeger(9007199254740992 - 1); |
+} {9007199254740991} |
+do_execsql_test func4-1.45 { |
+ SELECT tointeger(9007199254740992); |
+} {9007199254740992} |
+do_execsql_test func4-1.46 { |
+ SELECT tointeger(9007199254740992 + 1); |
+} {9007199254740993} |
+do_execsql_test func4-1.47 { |
+ SELECT tointeger(9223372036854775807 - 1); |
+} {9223372036854775806} |
+do_execsql_test func4-1.48 { |
+ SELECT tointeger(9223372036854775807); |
+} {9223372036854775807} |
+if {$highPrecision(1)} { |
+ do_execsql_test func4-1.49 { |
+ SELECT tointeger(9223372036854775807 + 1); |
+ } {{}} |
+ do_execsql_test func4-1.50 { |
+ SELECT tointeger(9223372036854775808 - 1); |
+ } {{}} |
+ do_execsql_test func4-1.51 { |
+ SELECT tointeger(9223372036854775808); |
+ } {{}} |
+ do_execsql_test func4-1.52 { |
+ SELECT tointeger(9223372036854775808 + 1); |
+ } {{}} |
+} |
+do_execsql_test func4-1.53 { |
+ SELECT tointeger(18446744073709551616 - 1); |
+} {{}} |
+do_execsql_test func4-1.54 { |
+ SELECT tointeger(18446744073709551616); |
+} {{}} |
+do_execsql_test func4-1.55 { |
+ SELECT tointeger(18446744073709551616 + 1); |
+} {{}} |
+ |
+ifcapable floatingpoint { |
+ set highPrecision(2) [expr \ |
+ {[db eval {SELECT toreal(-9223372036854775808 + 1);}] eq {{}}}] |
+ |
+ do_execsql_test func4-2.1 { |
+ SELECT toreal(NULL); |
+ } {{}} |
+ do_execsql_test func4-2.2 { |
+ SELECT toreal(''); |
+ } {{}} |
+ do_execsql_test func4-2.3 { |
+ SELECT toreal(' '); |
+ } {{}} |
+ do_execsql_test func4-2.4 { |
+ SELECT toreal('1234'); |
+ } {1234.0} |
+ do_execsql_test func4-2.5 { |
+ SELECT toreal(' 1234'); |
+ } {{}} |
+ do_execsql_test func4-2.6 { |
+ SELECT toreal('bad'); |
+ } {{}} |
+ do_execsql_test func4-2.7 { |
+ SELECT toreal('0xBAD'); |
+ } {{}} |
+ do_execsql_test func4-2.8 { |
+ SELECT toreal('123BAD'); |
+ } {{}} |
+ do_execsql_test func4-2.9 { |
+ SELECT toreal('0x123BAD'); |
+ } {{}} |
+ do_execsql_test func4-2.10 { |
+ SELECT toreal('123NO'); |
+ } {{}} |
+ do_execsql_test func4-2.11 { |
+ SELECT toreal('0x123NO'); |
+ } {{}} |
+ do_execsql_test func4-2.12 { |
+ SELECT toreal('-0x1'); |
+ } {{}} |
+ do_execsql_test func4-2.13 { |
+ SELECT toreal('-0x0'); |
+ } {{}} |
+ do_execsql_test func4-2.14 { |
+ SELECT toreal('0x0'); |
+ } {{}} |
+ do_execsql_test func4-2.15 { |
+ SELECT toreal('0x1'); |
+ } {{}} |
+ do_execsql_test func4-2.16 { |
+ SELECT toreal(-1); |
+ } {-1.0} |
+ do_execsql_test func4-2.17 { |
+ SELECT toreal(-0); |
+ } {0.0} |
+ do_execsql_test func4-2.18 { |
+ SELECT toreal(0); |
+ } {0.0} |
+ do_execsql_test func4-2.19 { |
+ SELECT toreal(1); |
+ } {1.0} |
+ do_execsql_test func4-2.20 { |
+ SELECT toreal(-1.79769313486232e308 - 1); |
+ } {-Inf} |
+ do_execsql_test func4-2.21 { |
+ SELECT toreal(-1.79769313486232e308); |
+ } {-Inf} |
+ do_execsql_test func4-2.22 { |
+ SELECT toreal(-1.79769313486232e308 + 1); |
+ } {-Inf} |
+ do_execsql_test func4-2.23 { |
+ SELECT toreal(-9223372036854775808 - 1); |
+ } {-9.223372036854776e+18} |
+ do_execsql_test func4-2.24 { |
+ SELECT toreal(-9223372036854775808); |
+ } {-9.223372036854776e+18} |
+ if {$highPrecision(2)} { |
+ do_execsql_test func4-2.25 { |
+ SELECT toreal(-9223372036854775808 + 1); |
+ } {{}} |
+ } |
+ do_execsql_test func4-2.26 { |
+ SELECT toreal(-9223372036854775807 - 1); |
+ } {-9.223372036854776e+18} |
+ if {$highPrecision(2)} { |
+ do_execsql_test func4-2.27 { |
+ SELECT toreal(-9223372036854775807); |
+ } {{}} |
+ do_execsql_test func4-2.28 { |
+ SELECT toreal(-9223372036854775807 + 1); |
+ } {{}} |
+ } |
+ do_execsql_test func4-2.29 { |
+ SELECT toreal(-2147483648 - 1); |
+ } {-2147483649.0} |
+ do_execsql_test func4-2.30 { |
+ SELECT toreal(-2147483648); |
+ } {-2147483648.0} |
+ do_execsql_test func4-2.31 { |
+ SELECT toreal(-2147483648 + 1); |
+ } {-2147483647.0} |
+ do_execsql_test func4-2.32 { |
+ SELECT toreal(2147483647 - 1); |
+ } {2147483646.0} |
+ do_execsql_test func4-2.33 { |
+ SELECT toreal(2147483647); |
+ } {2147483647.0} |
+ do_execsql_test func4-2.34 { |
+ SELECT toreal(2147483647 + 1); |
+ } {2147483648.0} |
+ if {$highPrecision(2)} { |
+ do_execsql_test func4-2.35 { |
+ SELECT toreal(9223372036854775807 - 1); |
+ } {{}} |
+ if {$highPrecision(1)} { |
+ do_execsql_test func4-2.36 { |
+ SELECT toreal(9223372036854775807); |
+ } {{}} |
+ } |
+ } |
+ do_execsql_test func4-2.37 { |
+ SELECT toreal(9223372036854775807 + 1); |
+ } {9.223372036854776e+18} |
+ do_execsql_test func4-2.38 { |
+ SELECT toreal(1.79769313486232e308 - 1); |
+ } {Inf} |
+ do_execsql_test func4-2.39 { |
+ SELECT toreal(1.79769313486232e308); |
+ } {Inf} |
+ do_execsql_test func4-2.40 { |
+ SELECT toreal(1.79769313486232e308 + 1); |
+ } {Inf} |
+ do_execsql_test func4-2.41 { |
+ SELECT toreal(4503599627370496 - 1); |
+ } {4503599627370495.0} |
+ do_execsql_test func4-2.42 { |
+ SELECT toreal(4503599627370496); |
+ } {4503599627370496.0} |
+ do_execsql_test func4-2.43 { |
+ SELECT toreal(4503599627370496 + 1); |
+ } {4503599627370497.0} |
+ do_execsql_test func4-2.44 { |
+ SELECT toreal(9007199254740992 - 1); |
+ } {9007199254740991.0} |
+ do_execsql_test func4-2.45 { |
+ SELECT toreal(9007199254740992); |
+ } {9007199254740992.0} |
+ if {$highPrecision(2)} { |
+ do_execsql_test func4-2.46 { |
+ SELECT toreal(9007199254740992 + 1); |
+ } {{}} |
+ } |
+ do_execsql_test func4-2.47 { |
+ SELECT toreal(9007199254740992 + 2); |
+ } {9007199254740994.0} |
+ do_execsql_test func4-2.48 { |
+ SELECT toreal(tointeger(9223372036854775808) - 1); |
+ } {{}} |
+ if {$highPrecision(1)} { |
+ do_execsql_test func4-2.49 { |
+ SELECT toreal(tointeger(9223372036854775808)); |
+ } {{}} |
+ do_execsql_test func4-2.50 { |
+ SELECT toreal(tointeger(9223372036854775808) + 1); |
+ } {{}} |
+ } |
+ do_execsql_test func4-2.51 { |
+ SELECT toreal(tointeger(18446744073709551616) - 1); |
+ } {{}} |
+ do_execsql_test func4-2.52 { |
+ SELECT toreal(tointeger(18446744073709551616)); |
+ } {{}} |
+ do_execsql_test func4-2.53 { |
+ SELECT toreal(tointeger(18446744073709551616) + 1); |
+ } {{}} |
+} |
+ |
+ifcapable check { |
+ do_execsql_test func4-3.1 { |
+ CREATE TABLE t1( |
+ x INTEGER CHECK(tointeger(x) IS NOT NULL) |
+ ); |
+ } {} |
+ do_test func4-3.2 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES (NULL); |
+ } |
+ } {1 {CHECK constraint failed: t1}} |
+ do_test func4-3.3 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES (NULL); |
+ } |
+ } {1 {CHECK constraint failed: t1}} |
+ do_test func4-3.4 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES (''); |
+ } |
+ } {1 {CHECK constraint failed: t1}} |
+ do_test func4-3.5 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES ('bad'); |
+ } |
+ } {1 {CHECK constraint failed: t1}} |
+ do_test func4-3.6 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES ('1234bad'); |
+ } |
+ } {1 {CHECK constraint failed: t1}} |
+ do_test func4-3.7 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES ('1234.56bad'); |
+ } |
+ } {1 {CHECK constraint failed: t1}} |
+ do_test func4-3.8 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES (1234); |
+ } |
+ } {0 {}} |
+ do_test func4-3.9 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES (1234.56); |
+ } |
+ } {1 {CHECK constraint failed: t1}} |
+ do_test func4-3.10 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES ('1234'); |
+ } |
+ } {0 {}} |
+ do_test func4-3.11 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES ('1234.56'); |
+ } |
+ } {1 {CHECK constraint failed: t1}} |
+ do_test func4-3.12 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES (ZEROBLOB(4)); |
+ } |
+ } {1 {CHECK constraint failed: t1}} |
+ do_test func4-3.13 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES (X''); |
+ } |
+ } {1 {CHECK constraint failed: t1}} |
+ do_test func4-3.14 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES (X'1234'); |
+ } |
+ } {1 {CHECK constraint failed: t1}} |
+ do_test func4-3.15 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES (X'12345678'); |
+ } |
+ } {1 {CHECK constraint failed: t1}} |
+ do_test func4-3.16 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES ('1234.00'); |
+ } |
+ } {1 {CHECK constraint failed: t1}} |
+ do_test func4-3.17 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES (1234.00); |
+ } |
+ } {0 {}} |
+ do_test func4-3.18 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES ('-9223372036854775809'); |
+ } |
+ } {1 {CHECK constraint failed: t1}} |
+ if {$highPrecision(1)} { |
+ do_test func4-3.19 { |
+ catchsql { |
+ INSERT INTO t1 (x) VALUES (9223372036854775808); |
+ } |
+ } {1 {CHECK constraint failed: t1}} |
+ } |
+ do_execsql_test func4-3.20 { |
+ SELECT x FROM t1 ORDER BY x; |
+ } {1234 1234 1234} |
+ |
+ ifcapable floatingpoint { |
+ do_execsql_test func4-4.1 { |
+ CREATE TABLE t2( |
+ x REAL CHECK(toreal(x) IS NOT NULL) |
+ ); |
+ } {} |
+ do_test func4-4.2 { |
+ catchsql { |
+ INSERT INTO t2 (x) VALUES (NULL); |
+ } |
+ } {1 {CHECK constraint failed: t2}} |
+ do_test func4-4.3 { |
+ catchsql { |
+ INSERT INTO t2 (x) VALUES (NULL); |
+ } |
+ } {1 {CHECK constraint failed: t2}} |
+ do_test func4-4.4 { |
+ catchsql { |
+ INSERT INTO t2 (x) VALUES (''); |
+ } |
+ } {1 {CHECK constraint failed: t2}} |
+ do_test func4-4.5 { |
+ catchsql { |
+ INSERT INTO t2 (x) VALUES ('bad'); |
+ } |
+ } {1 {CHECK constraint failed: t2}} |
+ do_test func4-4.6 { |
+ catchsql { |
+ INSERT INTO t2 (x) VALUES ('1234bad'); |
+ } |
+ } {1 {CHECK constraint failed: t2}} |
+ do_test func4-4.7 { |
+ catchsql { |
+ INSERT INTO t2 (x) VALUES ('1234.56bad'); |
+ } |
+ } {1 {CHECK constraint failed: t2}} |
+ do_test func4-4.8 { |
+ catchsql { |
+ INSERT INTO t2 (x) VALUES (1234); |
+ } |
+ } {0 {}} |
+ do_test func4-4.9 { |
+ catchsql { |
+ INSERT INTO t2 (x) VALUES (1234.56); |
+ } |
+ } {0 {}} |
+ do_test func4-4.10 { |
+ catchsql { |
+ INSERT INTO t2 (x) VALUES ('1234'); |
+ } |
+ } {0 {}} |
+ do_test func4-4.11 { |
+ catchsql { |
+ INSERT INTO t2 (x) VALUES ('1234.56'); |
+ } |
+ } {0 {}} |
+ do_test func4-4.12 { |
+ catchsql { |
+ INSERT INTO t2 (x) VALUES (ZEROBLOB(4)); |
+ } |
+ } {1 {CHECK constraint failed: t2}} |
+ do_test func4-4.13 { |
+ catchsql { |
+ INSERT INTO t2 (x) VALUES (X''); |
+ } |
+ } {1 {CHECK constraint failed: t2}} |
+ do_test func4-4.14 { |
+ catchsql { |
+ INSERT INTO t2 (x) VALUES (X'1234'); |
+ } |
+ } {1 {CHECK constraint failed: t2}} |
+ do_test func4-4.15 { |
+ catchsql { |
+ INSERT INTO t2 (x) VALUES (X'12345678'); |
+ } |
+ } {1 {CHECK constraint failed: t2}} |
+ do_execsql_test func4-4.16 { |
+ SELECT x FROM t2 ORDER BY x; |
+ } {1234.0 1234.0 1234.56 1234.56} |
+ } |
+} |
+ |
+ifcapable floatingpoint { |
+ do_execsql_test func4-5.1 { |
+ SELECT tointeger(toreal('1234')); |
+ } {1234} |
+ do_execsql_test func4-5.2 { |
+ SELECT tointeger(toreal(-1)); |
+ } {-1} |
+ do_execsql_test func4-5.3 { |
+ SELECT tointeger(toreal(-0)); |
+ } {0} |
+ do_execsql_test func4-5.4 { |
+ SELECT tointeger(toreal(0)); |
+ } {0} |
+ do_execsql_test func4-5.5 { |
+ SELECT tointeger(toreal(1)); |
+ } {1} |
+ do_execsql_test func4-5.6 { |
+ SELECT tointeger(toreal(-9223372036854775808 - 1)); |
+ } {-9223372036854775808} |
+ do_execsql_test func4-5.7 { |
+ SELECT tointeger(toreal(-9223372036854775808)); |
+ } {-9223372036854775808} |
+ if {$highPrecision(2)} { |
+ do_execsql_test func4-5.8 { |
+ SELECT tointeger(toreal(-9223372036854775808 + 1)); |
+ } {{}} |
+ } |
+ do_execsql_test func4-5.9 { |
+ SELECT tointeger(toreal(-2147483648 - 1)); |
+ } {-2147483649} |
+ do_execsql_test func4-5.10 { |
+ SELECT tointeger(toreal(-2147483648)); |
+ } {-2147483648} |
+ do_execsql_test func4-5.11 { |
+ SELECT tointeger(toreal(-2147483648 + 1)); |
+ } {-2147483647} |
+ do_execsql_test func4-5.12 { |
+ SELECT tointeger(toreal(2147483647 - 1)); |
+ } {2147483646} |
+ do_execsql_test func4-5.13 { |
+ SELECT tointeger(toreal(2147483647)); |
+ } {2147483647} |
+ do_execsql_test func4-5.14 { |
+ SELECT tointeger(toreal(2147483647 + 1)); |
+ } {2147483648} |
+ do_execsql_test func4-5.15 { |
+ SELECT tointeger(toreal(9223372036854775807 - 1)); |
+ } {{}} |
+ if {$highPrecision(1)} { |
+ do_execsql_test func4-5.16 { |
+ SELECT tointeger(toreal(9223372036854775807)); |
+ } {{}} |
+ do_execsql_test func4-5.17 { |
+ SELECT tointeger(toreal(9223372036854775807 + 1)); |
+ } {{}} |
+ } |
+ do_execsql_test func4-5.18 { |
+ SELECT tointeger(toreal(4503599627370496 - 1)); |
+ } {4503599627370495} |
+ do_execsql_test func4-5.19 { |
+ SELECT tointeger(toreal(4503599627370496)); |
+ } {4503599627370496} |
+ do_execsql_test func4-5.20 { |
+ SELECT tointeger(toreal(4503599627370496 + 1)); |
+ } {4503599627370497} |
+ do_execsql_test func4-5.21 { |
+ SELECT tointeger(toreal(9007199254740992 - 1)); |
+ } {9007199254740991} |
+ do_execsql_test func4-5.22 { |
+ SELECT tointeger(toreal(9007199254740992)); |
+ } {9007199254740992} |
+ if {$highPrecision(2)} { |
+ do_execsql_test func4-5.23 { |
+ SELECT tointeger(toreal(9007199254740992 + 1)); |
+ } {{}} |
+ } |
+ do_execsql_test func4-5.24 { |
+ SELECT tointeger(toreal(9007199254740992 + 2)); |
+ } {9007199254740994} |
+ if {$highPrecision(1)} { |
+ do_execsql_test func4-5.25 { |
+ SELECT tointeger(toreal(9223372036854775808 - 1)); |
+ } {{}} |
+ do_execsql_test func4-5.26 { |
+ SELECT tointeger(toreal(9223372036854775808)); |
+ } {{}} |
+ do_execsql_test func4-5.27 { |
+ SELECT tointeger(toreal(9223372036854775808 + 1)); |
+ } {{}} |
+ } |
+ do_execsql_test func4-5.28 { |
+ SELECT tointeger(toreal(18446744073709551616 - 1)); |
+ } {{}} |
+ do_execsql_test func4-5.29 { |
+ SELECT tointeger(toreal(18446744073709551616)); |
+ } {{}} |
+ do_execsql_test func4-5.30 { |
+ SELECT tointeger(toreal(18446744073709551616 + 1)); |
+ } {{}} |
+} |
+ |
+for {set i 0} {$i < 10} {incr i} { |
+ if {$i == 8} continue |
+ do_execsql_test func4-6.1.$i.1 [subst { |
+ SELECT tointeger(x'[string repeat 01 $i]'); |
+ }] {{}} |
+ ifcapable floatingpoint { |
+ do_execsql_test func4-6.1.$i.2 [subst { |
+ SELECT toreal(x'[string repeat 01 $i]'); |
+ }] {{}} |
+ } |
+} |
+ |
+do_execsql_test func4-6.2.1 { |
+ SELECT tointeger(x'0102030405060708'); |
+} {578437695752307201} |
+do_execsql_test func4-6.2.2 { |
+ SELECT tointeger(x'0807060504030201'); |
+} {72623859790382856} |
+ |
+ifcapable floatingpoint { |
+ do_execsql_test func4-6.3.1 { |
+ SELECT toreal(x'ffefffffffffffff'); |
+ } {-1.7976931348623157e+308} |
+ do_execsql_test func4-6.3.2 { |
+ SELECT toreal(x'8010000000000000'); |
+ } {-2.2250738585072014e-308} |
+ do_execsql_test func4-6.3.3 { |
+ SELECT toreal(x'c000000000000000'); |
+ } {-2.0} |
+ do_execsql_test func4-6.3.4 { |
+ SELECT toreal(x'bff0000000000000'); |
+ } {-1.0} |
+ do_execsql_test func4-6.3.5 { |
+ SELECT toreal(x'8000000000000000'); |
+ } {-0.0} |
+ do_execsql_test func4-6.3.6 { |
+ SELECT toreal(x'0000000000000000'); |
+ } {0.0} |
+ do_execsql_test func4-6.3.7 { |
+ SELECT toreal(x'3ff0000000000000'); |
+ } {1.0} |
+ do_execsql_test func4-6.3.8 { |
+ SELECT toreal(x'4000000000000000'); |
+ } {2.0} |
+ do_execsql_test func4-6.3.9 { |
+ SELECT toreal(x'0010000000000000'); |
+ } {2.2250738585072014e-308} |
+ do_execsql_test func4-6.3.10 { |
+ SELECT toreal(x'7fefffffffffffff'); |
+ } {1.7976931348623157e+308} |
+ do_execsql_test func4-6.3.11 { |
+ SELECT toreal(x'8000000000000001'); |
+ } {-5e-324} |
+ do_execsql_test func4-6.3.12 { |
+ SELECT toreal(x'800fffffffffffff'); |
+ } {-2.225073858507201e-308} |
+ do_execsql_test func4-6.3.13 { |
+ SELECT toreal(x'0000000000000001'); |
+ } {5e-324} |
+ do_execsql_test func4-6.3.14 { |
+ SELECT toreal(x'000fffffffffffff'); |
+ } {2.225073858507201e-308} |
+ do_execsql_test func4-6.3.15 { |
+ SELECT toreal(x'fff0000000000000'); |
+ } {-Inf} |
+ do_execsql_test func4-6.3.16 { |
+ SELECT toreal(x'7ff0000000000000'); |
+ } {Inf} |
+ do_execsql_test func4-6.3.17 { |
+ SELECT toreal(x'fff8000000000000'); |
+ } {{}} |
+ do_execsql_test func4-6.3.18 { |
+ SELECT toreal(x'fff0000000000001'); |
+ } {{}} |
+ do_execsql_test func4-6.3.19 { |
+ SELECT toreal(x'fff7ffffffffffff'); |
+ } {{}} |
+ do_execsql_test func4-6.3.20 { |
+ SELECT toreal(x'7ff0000000000001'); |
+ } {{}} |
+ do_execsql_test func4-6.3.21 { |
+ SELECT toreal(x'7ff7ffffffffffff'); |
+ } {{}} |
+ do_execsql_test func4-6.3.22 { |
+ SELECT toreal(x'fff8000000000001'); |
+ } {{}} |
+ do_execsql_test func4-6.3.23 { |
+ SELECT toreal(x'ffffffffffffffff'); |
+ } {{}} |
+ do_execsql_test func4-6.3.24 { |
+ SELECT toreal(x'7ff8000000000000'); |
+ } {{}} |
+ do_execsql_test func4-6.3.25 { |
+ SELECT toreal(x'7fffffffffffffff'); |
+ } {{}} |
+} |
+ |
+set tcl_precision $saved_tcl_precision |
+unset saved_tcl_precision |
+finish_test |