xref: /sqlite-3.40.0/test/collateA.test (revision 8a29dfde)
1#
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#
16# $Id: collateA.test,v 1.2 2008/01/21 16:47:16 drh Exp $
17
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    );
28    INSERT INTO t1 VALUES(1, 'hello','hello');
29    INSERT INTO t1 VALUES(2, 'xyzzy ','xyzzy ');
30    INSERT INTO t1 VALUES(3, 'xyzzy  ','xyzzy  ');
31    INSERT INTO t1 VALUES(4, 'xyzzy   ','xyzzy   ');
32    SELECT count(*) FROM t1;
33  }
34} {4}
35do_test collateA-1.2 {
36  execsql {SELECT a FROM t1 WHERE b='hello     '}
37} {}
38do_test collateA-1.3 {
39  execsql {SELECT a FROM t1 WHERE c='hello     '}
40} {1}
41do_test collateA-1.4 {
42  execsql {SELECT a FROM t1 WHERE b='xyzzy'}
43} {}
44do_test collateA-1.5 {
45  execsql {SELECT a FROM t1 WHERE c='xyzzy'}
46} {2 3 4}
47do_test collateA-1.6 {
48  execsql {SELECT a FROM t1 WHERE c='xyzzy '}
49} {2 3 4}
50do_test collateA-1.7 {
51  execsql {SELECT a FROM t1 WHERE c='xyzzy  '}
52} {2 3 4}
53do_test collateA-1.8 {
54  execsql {SELECT a FROM t1 WHERE c='xyzzy   '}
55} {2 3 4}
56do_test collateA-1.9 {
57  execsql {SELECT a FROM t1 WHERE c='xyzzy    '}
58} {2 3 4}
59do_test collateA-1.10 {
60  execsql {SELECT a FROM t1 WHERE c='xyzzy                                  '}
61} {2 3 4}
62do_test collateA-1.11 {
63  execsql {SELECT 'abc123'='abc123                         ' COLLATE RTRIM;}
64} {1}
65do_test collateA-1.12 {
66  execsql {SELECT 'abc123                         '='abc123' COLLATE RTRIM;}
67} {1}
68do_test collateA-1.13 {
69  execsql {SELECT '  '='' COLLATE RTRIM, '  '='' COLLATE BINARY, '  '=''}
70} {1 0 0}
71do_test collateA-1.14 {
72  execsql {SELECT ''='  ' COLLATE RTRIM, ''='  ' COLLATE BINARY, ''='  '}
73} {1 0 0}
74do_test collateA-1.15 {
75  execsql {SELECT '  '='      ' COLLATE RTRIM, '  '='        '}
76} {1 0}
77do_test collateA-1.16 {
78  execsql {SELECT ''<>'  ' COLLATE RTRIM, ''<>'  ' COLLATE BINARY, ''<>'  '}
79} {0 1 1}
80
81
82do_test collateA-2.1 {
83  execsql {
84    CREATE INDEX i1b ON t1(b);
85    CREATE INDEX i1c ON t1(c);
86    PRAGMA integrity_check;
87  }
88} {ok}
89do_test collateA-2.2 {
90  execsql {SELECT a FROM t1 WHERE b='hello     '}
91} {}
92do_test collateA-2.3 {
93  execsql {SELECT a FROM t1 WHERE c='hello     '}
94} {1}
95do_test collateA-2.4 {
96  execsql {SELECT a FROM t1 WHERE b='xyzzy'}
97} {}
98do_test collateA-2.5 {
99  execsql {SELECT a FROM t1 WHERE c='xyzzy'}
100} {2 3 4}
101do_test collateA-2.6 {
102  execsql {SELECT a FROM t1 WHERE c='xyzzy '}
103} {2 3 4}
104do_test collateA-2.7 {
105  execsql {SELECT a FROM t1 WHERE c='xyzzy  '}
106} {2 3 4}
107do_test collateA-2.8 {
108  execsql {SELECT a FROM t1 WHERE c='xyzzy   '}
109} {2 3 4}
110do_test collateA-2.9 {
111  execsql {SELECT a FROM t1 WHERE c='xyzzy    '}
112} {2 3 4}
113do_test collateA-2.10 {
114  execsql {SELECT a FROM t1 WHERE c='xyzzy                                  '}
115} {2 3 4}
116
117do_test collateA-3.1 {
118  db close
119  sqlite3 db test.db
120  execsql {
121    REINDEX;
122    PRAGMA integrity_check;
123  }
124} {ok}
125do_test collateA-3.2 {
126  execsql {SELECT a FROM t1 WHERE b='hello     '}
127} {}
128do_test collateA-3.3 {
129  execsql {SELECT a FROM t1 WHERE c='hello     '}
130} {1}
131do_test collateA-3.4 {
132  execsql {SELECT a FROM t1 WHERE b='xyzzy'}
133} {}
134do_test collateA-3.5 {
135  execsql {SELECT a FROM t1 WHERE c='xyzzy'}
136} {2 3 4}
137do_test collateA-3.6 {
138  execsql {SELECT a FROM t1 WHERE c='xyzzy '}
139} {2 3 4}
140do_test collateA-3.7 {
141  execsql {SELECT a FROM t1 WHERE c='xyzzy  '}
142} {2 3 4}
143do_test collateA-3.8 {
144  execsql {SELECT a FROM t1 WHERE c='xyzzy   '}
145} {2 3 4}
146do_test collateA-3.9 {
147  execsql {SELECT a FROM t1 WHERE c='xyzzy    '}
148} {2 3 4}
149do_test collateA-3.10 {
150  execsql {SELECT a FROM t1 WHERE c='xyzzy                                  '}
151} {2 3 4}
152
153
154finish_test
155