xref: /sqlite-3.40.0/test/collateA.test (revision 9b5adfa2)
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.1 2008/01/20 23:19:58 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}
68
69do_test collateA-2.1 {
70  execsql {
71    CREATE INDEX i1b ON t1(b);
72    CREATE INDEX i1c ON t1(c);
73    PRAGMA integrity_check;
74  }
75} {ok}
76do_test collateA-2.2 {
77  execsql {SELECT a FROM t1 WHERE b='hello     '}
78} {}
79do_test collateA-2.3 {
80  execsql {SELECT a FROM t1 WHERE c='hello     '}
81} {1}
82do_test collateA-2.4 {
83  execsql {SELECT a FROM t1 WHERE b='xyzzy'}
84} {}
85do_test collateA-2.5 {
86  execsql {SELECT a FROM t1 WHERE c='xyzzy'}
87} {2 3 4}
88do_test collateA-2.6 {
89  execsql {SELECT a FROM t1 WHERE c='xyzzy '}
90} {2 3 4}
91do_test collateA-2.7 {
92  execsql {SELECT a FROM t1 WHERE c='xyzzy  '}
93} {2 3 4}
94do_test collateA-2.8 {
95  execsql {SELECT a FROM t1 WHERE c='xyzzy   '}
96} {2 3 4}
97do_test collateA-2.9 {
98  execsql {SELECT a FROM t1 WHERE c='xyzzy    '}
99} {2 3 4}
100do_test collateA-2.10 {
101  execsql {SELECT a FROM t1 WHERE c='xyzzy                                  '}
102} {2 3 4}
103
104do_test collateA-3.1 {
105  db close
106  sqlite3 db test.db
107  execsql {
108    REINDEX;
109    PRAGMA integrity_check;
110  }
111} {ok}
112do_test collateA-3.2 {
113  execsql {SELECT a FROM t1 WHERE b='hello     '}
114} {}
115do_test collateA-3.3 {
116  execsql {SELECT a FROM t1 WHERE c='hello     '}
117} {1}
118do_test collateA-3.4 {
119  execsql {SELECT a FROM t1 WHERE b='xyzzy'}
120} {}
121do_test collateA-3.5 {
122  execsql {SELECT a FROM t1 WHERE c='xyzzy'}
123} {2 3 4}
124do_test collateA-3.6 {
125  execsql {SELECT a FROM t1 WHERE c='xyzzy '}
126} {2 3 4}
127do_test collateA-3.7 {
128  execsql {SELECT a FROM t1 WHERE c='xyzzy  '}
129} {2 3 4}
130do_test collateA-3.8 {
131  execsql {SELECT a FROM t1 WHERE c='xyzzy   '}
132} {2 3 4}
133do_test collateA-3.9 {
134  execsql {SELECT a FROM t1 WHERE c='xyzzy    '}
135} {2 3 4}
136do_test collateA-3.10 {
137  execsql {SELECT a FROM t1 WHERE c='xyzzy                                  '}
138} {2 3 4}
139
140
141finish_test
142