blob: 3f7ebd9242fa7bfcc1270af3d5cb31051bcf464d [file] [log] [blame]
drh9b5adfa2008-01-20 23:19:56 +00001#
2# 2008 January 20
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 built-in RTRIM collating
14# API.
15#
drh5f3a3672008-04-15 04:02:40 +000016# $Id: collateA.test,v 1.3 2008/04/15 04:02:41 drh Exp $
drh9b5adfa2008-01-20 23:19:56 +000017
18set testdir [file dirname $argv0]
19source $testdir/tester.tcl
20
21do_test collateA-1.1 {
22 execsql {
23 CREATE TABLE t1(
24 a INTEGER PRIMARY KEY,
25 b TEXT COLLATE BINARY,
26 c TEXT COLLATE RTRIM
27 );
drh5f3a3672008-04-15 04:02:40 +000028 INSERT INTO t1 VALUES(1, 'abcde','abcde');
drh9b5adfa2008-01-20 23:19:56 +000029 INSERT INTO t1 VALUES(2, 'xyzzy ','xyzzy ');
30 INSERT INTO t1 VALUES(3, 'xyzzy ','xyzzy ');
31 INSERT INTO t1 VALUES(4, 'xyzzy ','xyzzy ');
drh5f3a3672008-04-15 04:02:40 +000032 INSERT INTO t1 VALUES(5, ' ', ' ');
33 INSERT INTO t1 VALUES(6, '', '');
drh9b5adfa2008-01-20 23:19:56 +000034 SELECT count(*) FROM t1;
35 }
drh5f3a3672008-04-15 04:02:40 +000036} {6}
drh9b5adfa2008-01-20 23:19:56 +000037do_test collateA-1.2 {
drh5f3a3672008-04-15 04:02:40 +000038 execsql {SELECT a FROM t1 WHERE b='abcde '}
drh9b5adfa2008-01-20 23:19:56 +000039} {}
40do_test collateA-1.3 {
drh5f3a3672008-04-15 04:02:40 +000041 execsql {SELECT a FROM t1 WHERE c='abcde '}
drh9b5adfa2008-01-20 23:19:56 +000042} {1}
43do_test collateA-1.4 {
44 execsql {SELECT a FROM t1 WHERE b='xyzzy'}
45} {}
46do_test collateA-1.5 {
47 execsql {SELECT a FROM t1 WHERE c='xyzzy'}
48} {2 3 4}
49do_test collateA-1.6 {
50 execsql {SELECT a FROM t1 WHERE c='xyzzy '}
51} {2 3 4}
52do_test collateA-1.7 {
53 execsql {SELECT a FROM t1 WHERE c='xyzzy '}
54} {2 3 4}
55do_test collateA-1.8 {
56 execsql {SELECT a FROM t1 WHERE c='xyzzy '}
57} {2 3 4}
58do_test collateA-1.9 {
59 execsql {SELECT a FROM t1 WHERE c='xyzzy '}
60} {2 3 4}
61do_test collateA-1.10 {
62 execsql {SELECT a FROM t1 WHERE c='xyzzy '}
63} {2 3 4}
64do_test collateA-1.11 {
65 execsql {SELECT 'abc123'='abc123 ' COLLATE RTRIM;}
66} {1}
67do_test collateA-1.12 {
68 execsql {SELECT 'abc123 '='abc123' COLLATE RTRIM;}
69} {1}
drh1df81a82008-01-21 16:47:16 +000070do_test collateA-1.13 {
71 execsql {SELECT ' '='' COLLATE RTRIM, ' '='' COLLATE BINARY, ' '=''}
72} {1 0 0}
73do_test collateA-1.14 {
74 execsql {SELECT ''=' ' COLLATE RTRIM, ''=' ' COLLATE BINARY, ''=' '}
75} {1 0 0}
76do_test collateA-1.15 {
77 execsql {SELECT ' '=' ' COLLATE RTRIM, ' '=' '}
78} {1 0}
79do_test collateA-1.16 {
80 execsql {SELECT ''<>' ' COLLATE RTRIM, ''<>' ' COLLATE BINARY, ''<>' '}
81} {0 1 1}
drh5f3a3672008-04-15 04:02:40 +000082do_test collateA-1.17 {
83 execsql {SELECT a FROM t1 WHERE c='xyzz'}
84} {}
85do_test collateA-1.18 {
86 execsql {SELECT a FROM t1 WHERE c='xyzzyy '}
87} {}
88do_test collateA-1.19 {
89 execsql {SELECT a FROM t1 WHERE c='xyzz '}
90} {}
91do_test collateA-1.20 {
92 execsql {SELECT a FROM t1 WHERE c='abcd '}
93} {}
94do_test collateA-1.21 {
95 execsql {SELECT a FROM t1 WHERE c='abcd'}
96} {}
97do_test collateA-1.22 {
98 execsql {SELECT a FROM t1 WHERE c='abc'}
99} {}
100do_test collateA-1.23 {
101 execsql {SELECT a FROM t1 WHERE c='abcdef '}
102} {}
103do_test collateA-1.24 {
104 execsql {SELECT a FROM t1 WHERE c=''}
105} {5 6}
106do_test collateA-1.25 {
107 execsql {SELECT a FROM t1 WHERE c=' '}
108} {5 6}
109do_test collateA-1.26 {
110 execsql {SELECT a FROM t1 WHERE c=' '}
111} {5 6}
drh1df81a82008-01-21 16:47:16 +0000112
drh9b5adfa2008-01-20 23:19:56 +0000113
114do_test collateA-2.1 {
115 execsql {
116 CREATE INDEX i1b ON t1(b);
117 CREATE INDEX i1c ON t1(c);
118 PRAGMA integrity_check;
119 }
120} {ok}
121do_test collateA-2.2 {
drh5f3a3672008-04-15 04:02:40 +0000122 execsql {SELECT a FROM t1 WHERE b='abcde '}
drh9b5adfa2008-01-20 23:19:56 +0000123} {}
124do_test collateA-2.3 {
drh5f3a3672008-04-15 04:02:40 +0000125 execsql {SELECT a FROM t1 WHERE c='abcde '}
drh9b5adfa2008-01-20 23:19:56 +0000126} {1}
127do_test collateA-2.4 {
128 execsql {SELECT a FROM t1 WHERE b='xyzzy'}
129} {}
130do_test collateA-2.5 {
131 execsql {SELECT a FROM t1 WHERE c='xyzzy'}
132} {2 3 4}
133do_test collateA-2.6 {
134 execsql {SELECT a FROM t1 WHERE c='xyzzy '}
135} {2 3 4}
136do_test collateA-2.7 {
137 execsql {SELECT a FROM t1 WHERE c='xyzzy '}
138} {2 3 4}
139do_test collateA-2.8 {
140 execsql {SELECT a FROM t1 WHERE c='xyzzy '}
141} {2 3 4}
142do_test collateA-2.9 {
143 execsql {SELECT a FROM t1 WHERE c='xyzzy '}
144} {2 3 4}
145do_test collateA-2.10 {
146 execsql {SELECT a FROM t1 WHERE c='xyzzy '}
147} {2 3 4}
drh5f3a3672008-04-15 04:02:40 +0000148do_test collateA-2.17 {
149 execsql {SELECT a FROM t1 WHERE c='xyzz'}
150} {}
151do_test collateA-2.18 {
152 execsql {SELECT a FROM t1 WHERE c='xyzzyy '}
153} {}
154do_test collateA-2.19 {
155 execsql {SELECT a FROM t1 WHERE c='xyzz '}
156} {}
157do_test collateA-2.20 {
158 execsql {SELECT a FROM t1 WHERE c='abcd '}
159} {}
160do_test collateA-2.21 {
161 execsql {SELECT a FROM t1 WHERE c='abcd'}
162} {}
163do_test collateA-2.22 {
164 execsql {SELECT a FROM t1 WHERE c='abc'}
165} {}
166do_test collateA-2.23 {
167 execsql {SELECT a FROM t1 WHERE c='abcdef '}
168} {}
169do_test collateA-2.24 {
170 execsql {SELECT a FROM t1 WHERE c=''}
171} {5 6}
172do_test collateA-2.25 {
173 execsql {SELECT a FROM t1 WHERE c=' '}
174} {5 6}
175do_test collateA-2.26 {
176 execsql {SELECT a FROM t1 WHERE c=' '}
177} {5 6}
178
drh9b5adfa2008-01-20 23:19:56 +0000179
180do_test collateA-3.1 {
181 db close
182 sqlite3 db test.db
183 execsql {
184 REINDEX;
185 PRAGMA integrity_check;
186 }
187} {ok}
188do_test collateA-3.2 {
drh5f3a3672008-04-15 04:02:40 +0000189 execsql {SELECT a FROM t1 WHERE b='abcde '}
drh9b5adfa2008-01-20 23:19:56 +0000190} {}
191do_test collateA-3.3 {
drh5f3a3672008-04-15 04:02:40 +0000192 execsql {SELECT a FROM t1 WHERE c='abcde '}
drh9b5adfa2008-01-20 23:19:56 +0000193} {1}
194do_test collateA-3.4 {
195 execsql {SELECT a FROM t1 WHERE b='xyzzy'}
196} {}
197do_test collateA-3.5 {
198 execsql {SELECT a FROM t1 WHERE c='xyzzy'}
199} {2 3 4}
200do_test collateA-3.6 {
201 execsql {SELECT a FROM t1 WHERE c='xyzzy '}
202} {2 3 4}
203do_test collateA-3.7 {
204 execsql {SELECT a FROM t1 WHERE c='xyzzy '}
205} {2 3 4}
206do_test collateA-3.8 {
207 execsql {SELECT a FROM t1 WHERE c='xyzzy '}
208} {2 3 4}
209do_test collateA-3.9 {
210 execsql {SELECT a FROM t1 WHERE c='xyzzy '}
211} {2 3 4}
212do_test collateA-3.10 {
213 execsql {SELECT a FROM t1 WHERE c='xyzzy '}
214} {2 3 4}
215
216
217finish_test