os/persistentdata/persistentstorage/sqlite3api/TEST/TclScript/colmeta.test
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 #
     2 # 2006 February 9
     3 #
     4 # The author disclaims copyright to this source code.  In place of
     5 # a legal notice, here is a blessing:
     6 #
     7 #    May you do good and not evil.
     8 #    May you find forgiveness for yourself and forgive others.
     9 #    May you share freely, never taking more than you give.
    10 #
    11 #***********************************************************************
    12 # This file implements regression tests for SQLite library.  The
    13 # focus of this script is the sqlite3_table_column_metadata() API.
    14 #
    15 # $Id: colmeta.test,v 1.4 2008/01/23 12:52:41 drh Exp $
    16 
    17 set testdir [file dirname $argv0]
    18 source $testdir/tester.tcl
    19 
    20 ifcapable !columnmetadata {
    21   finish_test
    22   return
    23 }
    24 
    25 # Set up a schema in the main and temp test databases.
    26 do_test colmeta-0 {
    27   execsql {
    28     CREATE TABLE abc(a, b, c);
    29     CREATE TABLE abc2(a PRIMARY KEY COLLATE NOCASE, b VARCHAR(32), c);
    30     CREATE TABLE abc3(a NOT NULL, b INTEGER PRIMARY KEY, c);
    31   }
    32   ifcapable autoinc {
    33     execsql {
    34       CREATE TABLE abc4(a, b INTEGER PRIMARY KEY AUTOINCREMENT, c);
    35     }
    36   }
    37   ifcapable view {
    38     execsql {
    39       CREATE VIEW v1 AS SELECT * FROM abc2;
    40     }
    41   }
    42 } {}
    43 
    44 
    45 # Return values are of the form:
    46 #
    47 #   {<decl-type> <collation> <not null> <primary key> <auto increment>}
    48 #
    49 set tests {
    50   1  {main abc a}                {0 {{} BINARY 0 0 0}}
    51   2  {{} abc a}                  {0 {{} BINARY 0 0 0}}
    52   3  {{} abc2 b}                 {0 {VARCHAR(32) BINARY 0 0 0}}
    53   4  {main abc2 b}               {0 {VARCHAR(32) BINARY 0 0 0}}
    54   5  {{} abc2 a}                 {0 {{} NOCASE 0 1 0}}
    55   6  {{} abc3 a}                 {0 {{} BINARY 1 0 0}}
    56   7  {{} abc3 b}                 {0 {INTEGER BINARY 0 1 0}}
    57   13 {main abc rowid}            {0 {INTEGER BINARY 0 1 0}}
    58   14 {main abc3 rowid}           {0 {INTEGER BINARY 0 1 0}}
    59   16 {main abc d}                {1 {no such table column: abc.d}}
    60 }
    61 ifcapable view {
    62   set tests [concat $tests {
    63     8  {{} abc4 b}                 {0 {INTEGER BINARY 0 1 1}}
    64     15 {main abc4 rowid}           {0 {INTEGER BINARY 0 1 1}}
    65   }]
    66 }
    67 ifcapable view {
    68   set tests [concat $tests {
    69     9  {{} v1 a}                   {1 {no such table column: v1.a}}
    70     10 {main v1 b}                 {1 {no such table column: v1.b}}
    71     11 {main v1 badname}           {1 {no such table column: v1.badname}}
    72     12 {main v1 rowid}             {1 {no such table column: v1.rowid}}
    73   }]
    74 }
    75 
    76 foreach {tn params results} $tests {
    77   set ::DB [sqlite3_connection_pointer db]
    78 
    79   set tstbody [concat sqlite3_table_column_metadata $::DB $params] 
    80   do_test colmeta-$tn.1 {
    81     list [catch $tstbody msg] [set msg]
    82   } $results
    83 
    84   db close
    85   sqlite3 db test.db
    86 
    87   set ::DB [sqlite3_connection_pointer db]
    88   set tstbody [concat sqlite3_table_column_metadata $::DB $params] 
    89   do_test colmeta-$tn.2 {
    90     list [catch $tstbody msg] [set msg]
    91   } $results
    92 }
    93 
    94 finish_test