| # 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 |