Annotation of embedaddon/sqlite3/test/ctime.test, revision 1.1.1.1

1.1       misho       1: # 2009 February 24
                      2: #
                      3: # The author disclaims copyright to this source code.  In place of
                      4: # a legal notice, here is a blessing:
                      5: #
                      6: #    May you do good and not evil.
                      7: #    May you find forgiveness for yourself and forgive others.
                      8: #    May you share freely, never taking more than you give.
                      9: #
                     10: #***********************************************************************
                     11: # This file implements regression tests for SQLite library.
                     12: #
                     13: # This file implements tests for the compile time diagnostic 
                     14: # functions.
                     15: #
                     16: 
                     17: set testdir [file dirname $argv0]
                     18: source $testdir/tester.tcl
                     19: 
                     20: # Test organization:
                     21: #
                     22: # ctime-1.*: Test pragma support.
                     23: # ctime-2.*: Test function support.
                     24: #
                     25: 
                     26: ifcapable !pragma||!compileoption_diags {
                     27:   finish_test
                     28:   return
                     29: }
                     30: 
                     31: #####################
                     32: # ctime-1.*: Test pragma support.
                     33: 
                     34: do_test ctime-1.1.1 {
                     35:   catchsql {
                     36:     PRAGMA compile_options();
                     37:   }
                     38: } {1 {near ")": syntax error}}
                     39: do_test ctime-1.1.2 {
                     40:   catchsql {
                     41:     PRAGMA compile_options(NULL);
                     42:   }
                     43: } {1 {near "NULL": syntax error}}
                     44: do_test ctime-1.1.3 {
                     45:   catchsql {
                     46:     PRAGMA compile_options *;
                     47:   }
                     48: } {1 {near "*": syntax error}}
                     49: 
                     50: do_test ctime-1.2.1 {
                     51:   set ans [ catchsql {
                     52:     PRAGMA compile_options;
                     53:   } ]
                     54:   list [ lindex $ans 0 ]
                     55: } {0}
                     56: # the results should be in sorted order already
                     57: do_test ctime-1.2.2 {
                     58:   set ans [ catchsql {
                     59:     PRAGMA compile_options;
                     60:   } ]
                     61:   list [ lindex $ans 0 ] [ expr { [lsort [lindex $ans 1]]==[lindex $ans 1] } ]
                     62: } {0 1}
                     63: 
                     64: # SQLITE_THREADSAFE should pretty much always be defined
                     65: # one way or the other, and it must have a value of 0 or 1.
                     66: do_test ctime-1.4.1 {
                     67:   catchsql {
                     68:     SELECT sqlite_compileoption_used('SQLITE_THREADSAFE');
                     69:   }
                     70: } {0 1}
                     71: do_test ctime-1.4.2 {
                     72:   catchsql {
                     73:     SELECT sqlite_compileoption_used('THREADSAFE');
                     74:   }
                     75: } {0 1}
                     76: do_test ctime-1.4.3 {
                     77:   catchsql {
                     78:     SELECT sqlite_compileoption_used("THREADSAFE");
                     79:   }
                     80: } {0 1}
                     81: 
                     82: do_test ctime-1.5 {
                     83:   set ans1 [ catchsql {
                     84:     SELECT sqlite_compileoption_used('THREADSAFE=0');
                     85:   } ]
                     86:   set ans2 [ catchsql {
                     87:     SELECT sqlite_compileoption_used('THREADSAFE=1');
                     88:   } ]
                     89:   set ans3 [ catchsql {
                     90:     SELECT sqlite_compileoption_used('THREADSAFE=2');
                     91:   } ]
                     92:   lsort [ list $ans1 $ans2 $ans3 ]
                     93: } {{0 0} {0 0} {0 1}}
                     94: 
                     95: do_test ctime-1.6 {
                     96:   execsql {
                     97:     SELECT sqlite_compileoption_used('THREADSAFE=');
                     98:   }
                     99: } {0}
                    100: 
                    101: do_test ctime-1.7.1 {
                    102:   execsql {
                    103:     SELECT sqlite_compileoption_used('SQLITE_OMIT_COMPILEOPTION_DIAGS');
                    104:   }
                    105: } {0}
                    106: do_test ctime-1.7.2 {
                    107:   execsql {
                    108:     SELECT sqlite_compileoption_used('OMIT_COMPILEOPTION_DIAGS');
                    109:   }
                    110: } {0}
                    111: 
                    112: #####################
                    113: # ctime-2.*: Test function support.
                    114: 
                    115: do_test ctime-2.1.1 {
                    116:   catchsql {
                    117:     SELECT sqlite_compileoption_used();
                    118:   }
                    119: } {1 {wrong number of arguments to function sqlite_compileoption_used()}}
                    120: do_test ctime-2.1.2 {
                    121:   catchsql {
                    122:     SELECT sqlite_compileoption_used(NULL);
                    123:   }
                    124: } {0 {{}}}
                    125: do_test ctime-2.1.3 {
                    126:   catchsql {
                    127:     SELECT sqlite_compileoption_used("");
                    128:   }
                    129: } {0 0}
                    130: do_test ctime-2.1.4 {
                    131:   catchsql {
                    132:     SELECT sqlite_compileoption_used('');
                    133:   }
                    134: } {0 0}
                    135: do_test ctime-2.1.5 {
                    136:   catchsql {
                    137:     SELECT sqlite_compileoption_used(foo);
                    138:   }
                    139: } {1 {no such column: foo}}
                    140: do_test ctime-2.1.6 {
                    141:   catchsql {
                    142:     SELECT sqlite_compileoption_used('THREADSAFE', 0);
                    143:   }
                    144: } {1 {wrong number of arguments to function sqlite_compileoption_used()}}
                    145: do_test ctime-2.1.7 {
                    146:   catchsql {
                    147:     SELECT sqlite_compileoption_used(0);
                    148:   }
                    149: } {0 0}
                    150: do_test ctime-2.1.8 {
                    151:   catchsql {
                    152:     SELECT sqlite_compileoption_used('0');
                    153:   }
                    154: } {0 0}
                    155: do_test ctime-2.1.9 {
                    156:   catchsql {
                    157:     SELECT sqlite_compileoption_used(1.0);
                    158:   }
                    159: } {0 0}
                    160: 
                    161: do_test ctime-2.2.1 {
                    162:   catchsql {
                    163:     SELECT sqlite_compileoption_get();
                    164:   }
                    165: } {1 {wrong number of arguments to function sqlite_compileoption_get()}}
                    166: do_test ctime-2.2.2 {
                    167:   catchsql {
                    168:     SELECT sqlite_compileoption_get(0, 0);
                    169:   }
                    170: } {1 {wrong number of arguments to function sqlite_compileoption_get()}}
                    171: 
                    172: # This assumes there is at least 1 compile time option
                    173: # (see SQLITE_THREADSAFE above).
                    174: do_test ctime-2.3 {
                    175:   catchsql {
                    176:     SELECT sqlite_compileoption_used(sqlite_compileoption_get(0));
                    177:   }
                    178: } {0 1}
                    179: 
                    180: # This assumes there is at least 1 compile time option
                    181: # (see SQLITE_THREADSAFE above).
                    182: do_test ctime-2.4 {
                    183:   set ans [ catchsql {
                    184:     SELECT sqlite_compileoption_get(0);
                    185:   } ]
                    186:   list [lindex $ans 0]
                    187: } {0}
                    188: 
                    189: # Get the list of defines using the pragma,
                    190: # then try querying each one with the functions.
                    191: set ans [ catchsql {
                    192:   PRAGMA compile_options;
                    193: } ]
                    194: set opts [ lindex $ans 1 ]
                    195: set tc 1
                    196: foreach opt $opts {
                    197:   do_test ctime-2.5.$tc {
                    198:     set N [ expr {$tc-1} ]
                    199:     set ans1 [ catchsql {
                    200:       SELECT sqlite_compileoption_get($N);
                    201:     } ]
                    202:     set ans2 [ catchsql {
                    203:       SELECT sqlite_compileoption_used($opt);
                    204:     } ]
                    205:     list [ lindex $ans1 0 ] [ expr { [lindex $ans1 1]==$opt } ] \
                    206:          [ expr { $ans2 } ]
                    207:   } {0 1 {0 1}}
                    208:   incr tc 1
                    209: }
                    210: # test 1 past array bounds
                    211: do_test ctime-2.5.$tc {
                    212:   set N [ expr {$tc-1} ]
                    213:   set ans [ catchsql {
                    214:     SELECT sqlite_compileoption_get($N);
                    215:   } ]
                    216: } {0 {{}}}
                    217: incr tc 1
                    218: # test 1 before array bounds (N=-1)
                    219: do_test ctime-2.5.$tc {
                    220:   set N -1
                    221:   set ans [ catchsql {
                    222:     SELECT sqlite_compileoption_get($N);
                    223:   } ]
                    224: } {0 {{}}}
                    225: 
                    226: 
                    227: finish_test

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>