blob: b328cd1d2dc1cbd7a0dea1eff8718f5ad049c980 [file] [log] [blame]
drhd55e0722012-10-25 03:07:29 +00001# 2012 October 24
2#
3# The author disclaims copyright to this source code. In place of
4# a legal notice, here is a blessing:
5#
6# May you do good and not evil.
7# May you find forgiveness for yourself and forgive others.
8# May you share freely, never taking more than you give.
9#
10#***********************************************************************
11# This file implements regression tests for SQLite library. The
12# focus of this file is testing the built-in INSTR() functions.
13#
14
15set testdir [file dirname $argv0]
16source $testdir/tester.tcl
17
18# Create a table to work with.
19#
20do_test instr-1.1 {
21 db eval {SELECT instr('abcdefg','a');}
22} {1}
23do_test instr-1.2 {
24 db eval {SELECT instr('abcdefg','b');}
25} {2}
26do_test instr-1.3 {
27 db eval {SELECT instr('abcdefg','c');}
28} {3}
29do_test instr-1.4 {
30 db eval {SELECT instr('abcdefg','d');}
31} {4}
32do_test instr-1.5 {
33 db eval {SELECT instr('abcdefg','e');}
34} {5}
35do_test instr-1.6 {
36 db eval {SELECT instr('abcdefg','f');}
37} {6}
38do_test instr-1.7 {
39 db eval {SELECT instr('abcdefg','g');}
40} {7}
41do_test instr-1.8 {
42 db eval {SELECT instr('abcdefg','h');}
43} {0}
44do_test instr-1.9 {
45 db eval {SELECT instr('abcdefg','abcdefg');}
46} {1}
47do_test instr-1.10 {
48 db eval {SELECT instr('abcdefg','abcdefgh');}
49} {0}
50do_test instr-1.11 {
51 db eval {SELECT instr('abcdefg','bcdefg');}
52} {2}
53do_test instr-1.12 {
54 db eval {SELECT instr('abcdefg','bcdefgh');}
55} {0}
56do_test instr-1.13 {
57 db eval {SELECT instr('abcdefg','cdefg');}
58} {3}
59do_test instr-1.14 {
60 db eval {SELECT instr('abcdefg','cdefgh');}
61} {0}
62do_test instr-1.15 {
63 db eval {SELECT instr('abcdefg','defg');}
64} {4}
65do_test instr-1.16 {
66 db eval {SELECT instr('abcdefg','defgh');}
67} {0}
68do_test instr-1.17 {
69 db eval {SELECT instr('abcdefg','efg');}
70} {5}
71do_test instr-1.18 {
72 db eval {SELECT instr('abcdefg','efgh');}
73} {0}
74do_test instr-1.19 {
75 db eval {SELECT instr('abcdefg','fg');}
76} {6}
77do_test instr-1.20 {
78 db eval {SELECT instr('abcdefg','fgh');}
79} {0}
80do_test instr-1.21 {
81 db eval {SELECT coalesce(instr('abcdefg',NULL),'nil');}
82} {nil}
83do_test instr-1.22 {
84 db eval {SELECT coalesce(instr(NULL,'x'),'nil');}
85} {nil}
86do_test instr-1.23 {
87 db eval {SELECT instr(12345,34);}
88} {3}
89do_test instr-1.24 {
90 db eval {SELECT instr(123456.78,34);}
91} {3}
92do_test instr-1.25 {
93 db eval {SELECT instr(123456.78,x'3334');}
94} {3}
95do_test instr-1.26 {
96 db eval {SELECT instr('äbcdefg','efg');}
97} {5}
98do_test instr-1.27 {
99 db eval {SELECT instr('€xyzzy','xyz');}
100} {2}
101do_test instr-1.28 {
102 db eval {SELECT instr('abc€xyzzy','xyz');}
103} {5}
104do_test instr-1.29 {
105 db eval {SELECT instr('abc€xyzzy','€xyz');}
106} {4}
107do_test instr-1.30 {
108 db eval {SELECT instr('abc€xyzzy','c€xyz');}
109} {3}
110do_test instr-1.31 {
111 db eval {SELECT instr(x'0102030405',x'01');}
112} {1}
113do_test instr-1.32 {
114 db eval {SELECT instr(x'0102030405',x'02');}
115} {2}
116do_test instr-1.33 {
117 db eval {SELECT instr(x'0102030405',x'03');}
118} {3}
119do_test instr-1.34 {
120 db eval {SELECT instr(x'0102030405',x'04');}
121} {4}
122do_test instr-1.35 {
123 db eval {SELECT instr(x'0102030405',x'05');}
124} {5}
125do_test instr-1.36 {
126 db eval {SELECT instr(x'0102030405',x'06');}
127} {0}
128do_test instr-1.37 {
129 db eval {SELECT instr(x'0102030405',x'0102030405');}
130} {1}
131do_test instr-1.38 {
132 db eval {SELECT instr(x'0102030405',x'02030405');}
133} {2}
134do_test instr-1.39 {
135 db eval {SELECT instr(x'0102030405',x'030405');}
136} {3}
137do_test instr-1.40 {
138 db eval {SELECT instr(x'0102030405',x'0405');}
139} {4}
140do_test instr-1.41 {
141 db eval {SELECT instr(x'0102030405',x'0506');}
142} {0}
143do_test instr-1.42 {
144 db eval {SELECT instr(x'0102030405',x'');}
145} {1}
146do_test instr-1.43 {
147 db eval {SELECT instr(x'',x'');}
148} {1}
149do_test instr-1.44 {
150 db eval {SELECT instr('','');}
151} {1}
152do_test instr-1.45 {
153 db eval {SELECT instr('abcdefg','');}
154} {1}
155unset -nocomplain longstr
156set longstr abcdefghijklmonpqrstuvwxyz
157append longstr $longstr
158append longstr $longstr
159append longstr $longstr
160append longstr $longstr
161append longstr $longstr
162append longstr $longstr
163append longstr $longstr
164append longstr $longstr
165append longstr $longstr
166append longstr $longstr
167append longstr $longstr
168append longstr $longstr
169# puts [string length $longstr]
170append longstr Xabcde
171do_test instr-1.46 {
172 db eval {SELECT instr($longstr,'X');}
173} {106497}
174do_test instr-1.47 {
175 db eval {SELECT instr($longstr,'Y');}
176} {0}
177do_test instr-1.48 {
178 db eval {SELECT instr($longstr,'Xa');}
179} {106497}
180do_test instr-1.49 {
181 db eval {SELECT instr($longstr,'zXa');}
182} {106496}
183set longstr [string map {a ä} $longstr]
184do_test instr-1.50 {
185 db eval {SELECT instr($longstr,'X');}
186} {106497}
187do_test instr-1.51 {
188 db eval {SELECT instr($longstr,'Y');}
189} {0}
190do_test instr-1.52 {
191 db eval {SELECT instr($longstr,'Xä');}
192} {106497}
193do_test instr-1.53 {
194 db eval {SELECT instr($longstr,'zXä');}
195} {106496}
196do_test instr-1.54 {
197 db eval {SELECT instr(x'78c3a4e282ac79','x');}
198} {1}
199do_test instr-1.55 {
200 db eval {SELECT instr(x'78c3a4e282ac79','y');}
201} {4}
202do_test instr-1.56 {
203 db eval {SELECT instr(x'78c3a4e282ac79',x'79');}
204} {7}
205do_test instr-1.57 {
206 db eval {SELECT instr('xä€y',x'79');}
207} {4}
208
209
210finish_test