File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / ctime.test
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:04:16 2012 UTC (12 years, 10 months ago) by misho
Branches: sqlite3, MAIN
CVS tags: v3_7_10, HEAD
sqlite3

    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>