| Index: third_party/sqlite/sqlite-src-3080704/test/func3.test
|
| diff --git a/third_party/sqlite/sqlite-src-3080704/test/func3.test b/third_party/sqlite/sqlite-src-3080704/test/func3.test
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3b1613b56c6d400fe317aa764d04908bb9ce953e
|
| --- /dev/null
|
| +++ b/third_party/sqlite/sqlite-src-3080704/test/func3.test
|
| @@ -0,0 +1,190 @@
|
| +# 2010 August 27
|
| +#
|
| +# 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 that destructor functions associated
|
| +# with functions created using sqlite3_create_function_v2() is
|
| +# correctly invoked.
|
| +#
|
| +set testdir [file dirname $argv0]
|
| +source $testdir/tester.tcl
|
| +
|
| +
|
| +ifcapable utf16 {
|
| + do_test func3-1.1 {
|
| + set destroyed 0
|
| + proc destroy {} { set ::destroyed 1 }
|
| + sqlite3_create_function_v2 db f2 -1 any -func f2 -destroy destroy
|
| + set destroyed
|
| + } 0
|
| + do_test func3-1.2 {
|
| + sqlite3_create_function_v2 db f2 -1 utf8 -func f2
|
| + set destroyed
|
| + } 0
|
| + do_test func3-1.3 {
|
| + sqlite3_create_function_v2 db f2 -1 utf16le -func f2
|
| + set destroyed
|
| + } 0
|
| + do_test func3-1.4 {
|
| + sqlite3_create_function_v2 db f2 -1 utf16be -func f2
|
| + set destroyed
|
| + } 1
|
| +}
|
| +
|
| +do_test func3-2.1 {
|
| + set destroyed 0
|
| + proc destroy {} { set ::destroyed 1 }
|
| + sqlite3_create_function_v2 db f3 -1 utf8 -func f3 -destroy destroy
|
| + set destroyed
|
| +} 0
|
| +do_test func3-2.2 {
|
| + sqlite3_create_function_v2 db f3 -1 utf8 -func f3
|
| + set destroyed
|
| +} 1
|
| +
|
| +do_test func3-3.1 {
|
| + set destroyed 0
|
| + proc destroy {} { set ::destroyed 1 }
|
| + sqlite3_create_function_v2 db f3 -1 any -func f3 -destroy destroy
|
| + set destroyed
|
| +} 0
|
| +do_test func3-3.2 {
|
| + db close
|
| + set destroyed
|
| +} 1
|
| +
|
| +sqlite3 db test.db
|
| +do_test func3-4.1 {
|
| + set destroyed 0
|
| + set rc [catch {
|
| + sqlite3_create_function_v2 db f3 -1 any -func f3 -step f3 -destroy destroy
|
| + } msg]
|
| + list $rc $msg
|
| +} {1 SQLITE_MISUSE}
|
| +do_test func3-4.2 { set destroyed } 1
|
| +
|
| +# EVIDENCE-OF: R-41921-05214 The likelihood(X,Y) function returns
|
| +# argument X unchanged.
|
| +#
|
| +do_execsql_test func3-5.1 {
|
| + SELECT likelihood(9223372036854775807, 0.5);
|
| +} {9223372036854775807}
|
| +do_execsql_test func3-5.2 {
|
| + SELECT likelihood(-9223372036854775808, 0.5);
|
| +} {-9223372036854775808}
|
| +do_execsql_test func3-5.3 {
|
| + SELECT likelihood(14.125, 0.5);
|
| +} {14.125}
|
| +do_execsql_test func3-5.4 {
|
| + SELECT likelihood(NULL, 0.5);
|
| +} {{}}
|
| +do_execsql_test func3-5.5 {
|
| + SELECT likelihood('test-string', 0.5);
|
| +} {test-string}
|
| +do_execsql_test func3-5.6 {
|
| + SELECT quote(likelihood(x'010203000405', 0.5));
|
| +} {X'010203000405'}
|
| +
|
| +# EVIDENCE-OF: R-44133-61651 The value Y in likelihood(X,Y) must be a
|
| +# floating point constant between 0.0 and 1.0, inclusive.
|
| +#
|
| +do_execsql_test func3-5.7 {
|
| + SELECT likelihood(123, 1.0), likelihood(456, 0.0);
|
| +} {123 456}
|
| +do_test func3-5.8 {
|
| + catchsql {
|
| + SELECT likelihood(123, 1.000001);
|
| + }
|
| +} {1 {second argument to likelihood() must be a constant between 0.0 and 1.0}}
|
| +do_test func3-5.9 {
|
| + catchsql {
|
| + SELECT likelihood(123, -0.000001);
|
| + }
|
| +} {1 {second argument to likelihood() must be a constant between 0.0 and 1.0}}
|
| +do_test func3-5.10 {
|
| + catchsql {
|
| + SELECT likelihood(123, 0.5+0.3);
|
| + }
|
| +} {1 {second argument to likelihood() must be a constant between 0.0 and 1.0}}
|
| +
|
| +# EVIDENCE-OF: R-28535-44631 The likelihood(X) function is a no-op that
|
| +# the code generator optimizes away so that it consumes no CPU cycles
|
| +# during run-time (that is, during calls to sqlite3_step()).
|
| +#
|
| +do_test func3-5.20 {
|
| + db eval {EXPLAIN SELECT likelihood(min(1.0+'2.0',4*11), 0.5)}
|
| +} [db eval {EXPLAIN SELECT min(1.0+'2.0',4*11)}]
|
| +
|
| +
|
| +# EVIDENCE-OF: R-11152-23456 The unlikely(X) function returns the
|
| +# argument X unchanged.
|
| +#
|
| +do_execsql_test func3-5.30 {
|
| + SELECT unlikely(9223372036854775807);
|
| +} {9223372036854775807}
|
| +do_execsql_test func3-5.31 {
|
| + SELECT unlikely(-9223372036854775808);
|
| +} {-9223372036854775808}
|
| +do_execsql_test func3-5.32 {
|
| + SELECT unlikely(14.125);
|
| +} {14.125}
|
| +do_execsql_test func3-5.33 {
|
| + SELECT unlikely(NULL);
|
| +} {{}}
|
| +do_execsql_test func3-5.34 {
|
| + SELECT unlikely('test-string');
|
| +} {test-string}
|
| +do_execsql_test func3-5.35 {
|
| + SELECT quote(unlikely(x'010203000405'));
|
| +} {X'010203000405'}
|
| +
|
| +# EVIDENCE-OF: R-22887-63324 The unlikely(X) function is a no-op that
|
| +# the code generator optimizes away so that it consumes no CPU cycles at
|
| +# run-time (that is, during calls to sqlite3_step()).
|
| +#
|
| +do_test func3-5.39 {
|
| + db eval {EXPLAIN SELECT unlikely(min(1.0+'2.0',4*11))}
|
| +} [db eval {EXPLAIN SELECT min(1.0+'2.0',4*11)}]
|
| +
|
| +
|
| +# EVIDENCE-OF: R-23735-03107 The likely(X) function returns the argument
|
| +# X unchanged.
|
| +#
|
| +do_execsql_test func3-5.50 {
|
| + SELECT likely(9223372036854775807);
|
| +} {9223372036854775807}
|
| +do_execsql_test func3-5.51 {
|
| + SELECT likely(-9223372036854775808);
|
| +} {-9223372036854775808}
|
| +do_execsql_test func3-5.52 {
|
| + SELECT likely(14.125);
|
| +} {14.125}
|
| +do_execsql_test func3-5.53 {
|
| + SELECT likely(NULL);
|
| +} {{}}
|
| +do_execsql_test func3-5.54 {
|
| + SELECT likely('test-string');
|
| +} {test-string}
|
| +do_execsql_test func3-5.55 {
|
| + SELECT quote(likely(x'010203000405'));
|
| +} {X'010203000405'}
|
| +
|
| +# EVIDENCE-OF: R-43464-09689 The likely(X) function is a no-op that the
|
| +# code generator optimizes away so that it consumes no CPU cycles at
|
| +# run-time (that is, during calls to sqlite3_step()).
|
| +#
|
| +do_test func3-5.59 {
|
| + db eval {EXPLAIN SELECT likely(min(1.0+'2.0',4*11))}
|
| +} [db eval {EXPLAIN SELECT min(1.0+'2.0',4*11)}]
|
| +
|
| +
|
| +
|
| +
|
| +finish_test
|
|
|