Annotation of embedaddon/sqlite3/test/ctime.test, revision 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>