/trunk/test/ctime.test |
@@ -0,0 +1,227 @@ |
# 2009 February 24 |
# |
# 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. |
# |
# This file implements tests for the compile time diagnostic |
# functions. |
# |
|
set testdir [file dirname $argv0] |
source $testdir/tester.tcl |
|
# Test organization: |
# |
# ctime-1.*: Test pragma support. |
# ctime-2.*: Test function support. |
# |
|
ifcapable !pragma||!compileoption_diags { |
finish_test |
return |
} |
|
##################### |
# ctime-1.*: Test pragma support. |
|
do_test ctime-1.1.1 { |
catchsql { |
PRAGMA compile_options(); |
} |
} {1 {near ")": syntax error}} |
do_test ctime-1.1.2 { |
catchsql { |
PRAGMA compile_options(NULL); |
} |
} {1 {near "NULL": syntax error}} |
do_test ctime-1.1.3 { |
catchsql { |
PRAGMA compile_options *; |
} |
} {1 {near "*": syntax error}} |
|
do_test ctime-1.2.1 { |
set ans [ catchsql { |
PRAGMA compile_options; |
} ] |
list [ lindex $ans 0 ] |
} {0} |
# the results should be in sorted order already |
do_test ctime-1.2.2 { |
set ans [ catchsql { |
PRAGMA compile_options; |
} ] |
list [ lindex $ans 0 ] [ expr { [lsort [lindex $ans 1]]==[lindex $ans 1] } ] |
} {0 1} |
|
# SQLITE_THREADSAFE should pretty much always be defined |
# one way or the other, and it must have a value of 0 or 1. |
do_test ctime-1.4.1 { |
catchsql { |
SELECT sqlite_compileoption_used('SQLITE_THREADSAFE'); |
} |
} {0 1} |
do_test ctime-1.4.2 { |
catchsql { |
SELECT sqlite_compileoption_used('THREADSAFE'); |
} |
} {0 1} |
do_test ctime-1.4.3 { |
catchsql { |
SELECT sqlite_compileoption_used("THREADSAFE"); |
} |
} {0 1} |
|
do_test ctime-1.5 { |
set ans1 [ catchsql { |
SELECT sqlite_compileoption_used('THREADSAFE=0'); |
} ] |
set ans2 [ catchsql { |
SELECT sqlite_compileoption_used('THREADSAFE=1'); |
} ] |
set ans3 [ catchsql { |
SELECT sqlite_compileoption_used('THREADSAFE=2'); |
} ] |
lsort [ list $ans1 $ans2 $ans3 ] |
} {{0 0} {0 0} {0 1}} |
|
do_test ctime-1.6 { |
execsql { |
SELECT sqlite_compileoption_used('THREADSAFE='); |
} |
} {0} |
|
do_test ctime-1.7.1 { |
execsql { |
SELECT sqlite_compileoption_used('SQLITE_OMIT_COMPILEOPTION_DIAGS'); |
} |
} {0} |
do_test ctime-1.7.2 { |
execsql { |
SELECT sqlite_compileoption_used('OMIT_COMPILEOPTION_DIAGS'); |
} |
} {0} |
|
##################### |
# ctime-2.*: Test function support. |
|
do_test ctime-2.1.1 { |
catchsql { |
SELECT sqlite_compileoption_used(); |
} |
} {1 {wrong number of arguments to function sqlite_compileoption_used()}} |
do_test ctime-2.1.2 { |
catchsql { |
SELECT sqlite_compileoption_used(NULL); |
} |
} {0 {{}}} |
do_test ctime-2.1.3 { |
catchsql { |
SELECT sqlite_compileoption_used(""); |
} |
} {0 0} |
do_test ctime-2.1.4 { |
catchsql { |
SELECT sqlite_compileoption_used(''); |
} |
} {0 0} |
do_test ctime-2.1.5 { |
catchsql { |
SELECT sqlite_compileoption_used(foo); |
} |
} {1 {no such column: foo}} |
do_test ctime-2.1.6 { |
catchsql { |
SELECT sqlite_compileoption_used('THREADSAFE', 0); |
} |
} {1 {wrong number of arguments to function sqlite_compileoption_used()}} |
do_test ctime-2.1.7 { |
catchsql { |
SELECT sqlite_compileoption_used(0); |
} |
} {0 0} |
do_test ctime-2.1.8 { |
catchsql { |
SELECT sqlite_compileoption_used('0'); |
} |
} {0 0} |
do_test ctime-2.1.9 { |
catchsql { |
SELECT sqlite_compileoption_used(1.0); |
} |
} {0 0} |
|
do_test ctime-2.2.1 { |
catchsql { |
SELECT sqlite_compileoption_get(); |
} |
} {1 {wrong number of arguments to function sqlite_compileoption_get()}} |
do_test ctime-2.2.2 { |
catchsql { |
SELECT sqlite_compileoption_get(0, 0); |
} |
} {1 {wrong number of arguments to function sqlite_compileoption_get()}} |
|
# This assumes there is at least 1 compile time option |
# (see SQLITE_THREADSAFE above). |
do_test ctime-2.3 { |
catchsql { |
SELECT sqlite_compileoption_used(sqlite_compileoption_get(0)); |
} |
} {0 1} |
|
# This assumes there is at least 1 compile time option |
# (see SQLITE_THREADSAFE above). |
do_test ctime-2.4 { |
set ans [ catchsql { |
SELECT sqlite_compileoption_get(0); |
} ] |
list [lindex $ans 0] |
} {0} |
|
# Get the list of defines using the pragma, |
# then try querying each one with the functions. |
set ans [ catchsql { |
PRAGMA compile_options; |
} ] |
set opts [ lindex $ans 1 ] |
set tc 1 |
foreach opt $opts { |
do_test ctime-2.5.$tc { |
set N [ expr {$tc-1} ] |
set ans1 [ catchsql { |
SELECT sqlite_compileoption_get($N); |
} ] |
set ans2 [ catchsql { |
SELECT sqlite_compileoption_used($opt); |
} ] |
list [ lindex $ans1 0 ] [ expr { [lindex $ans1 1]==$opt } ] \ |
[ expr { $ans2 } ] |
} {0 1 {0 1}} |
incr tc 1 |
} |
# test 1 past array bounds |
do_test ctime-2.5.$tc { |
set N [ expr {$tc-1} ] |
set ans [ catchsql { |
SELECT sqlite_compileoption_get($N); |
} ] |
} {0 {{}}} |
incr tc 1 |
# test 1 before array bounds (N=-1) |
do_test ctime-2.5.$tc { |
set N -1 |
set ans [ catchsql { |
SELECT sqlite_compileoption_get($N); |
} ] |
} {0 {{}}} |
|
|
finish_test |