diff options
Diffstat (limited to 'libraries/sqlite/unix/sqlite-3.5.1/test/colmeta.test')
-rw-r--r-- | libraries/sqlite/unix/sqlite-3.5.1/test/colmeta.test | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/libraries/sqlite/unix/sqlite-3.5.1/test/colmeta.test b/libraries/sqlite/unix/sqlite-3.5.1/test/colmeta.test new file mode 100644 index 0000000..c2513e6 --- /dev/null +++ b/libraries/sqlite/unix/sqlite-3.5.1/test/colmeta.test | |||
@@ -0,0 +1,103 @@ | |||
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.3 2006/02/10 13:33:31 danielk1977 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 | do_test colmeta-misuse.1 { | ||
95 | db close | ||
96 | set rc [catch { | ||
97 | sqlite3_table_column_metadata $::DB a b c | ||
98 | } msg] | ||
99 | list $rc $msg | ||
100 | } {1 {library routine called out of sequence}} | ||
101 | |||
102 | finish_test | ||
103 | |||