Chromium Code Reviews

Side by Side Diff: third_party/sqlite/src/test/fts3sort.test

Issue 949043002: Add //third_party/sqlite to dirs_to_snapshot, remove net_sql.patch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
« no previous file with comments | « third_party/sqlite/src/test/fts3snippet.test ('k') | third_party/sqlite/src/test/fts3tok1.test » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # 2011 May 04
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 script is testing the FTS3 module.
13 #
14
15 set testdir [file dirname $argv0]
16 source $testdir/tester.tcl
17
18 # If SQLITE_ENABLE_FTS3 is defined, omit this file.
19 ifcapable !fts3 {
20 finish_test
21 return
22 }
23
24
25 proc build_database {nRow param} {
26 db close
27 forcedelete test.db
28 sqlite3 db test.db
29
30 set vocab [list aa ab ac ba bb bc ca cb cc da]
31 expr srand(0)
32
33 execsql "CREATE VIRTUAL TABLE t1 USING fts4($param)"
34 for {set i 0} {$i < $nRow} {incr i} {
35 set v [expr int(rand()*1000000)]
36 set doc [list]
37 for {set div 1} {$div < 1000000} {set div [expr $div*10]} {
38 lappend doc [lindex $vocab [expr ($v/$div) % 10]]
39 }
40 execsql { INSERT INTO t1 VALUES($doc) }
41 }
42 }
43
44 set testprefix fts3sort
45
46 unset -nocomplain CONTROL
47 foreach {t param} {
48 1 ""
49 2 "order=asc"
50 3 "order=desc"
51 } {
52
53 set testprefix fts3sort-1.$t
54
55 set nRow 1000
56 do_test 1.0 {
57 build_database $nRow $param
58 execsql { SELECT count(*) FROM t1 }
59 } $nRow
60
61 foreach {tn query} {
62 1 "SELECT docid, * FROM t1"
63 2 "SELECT docid, * FROM t1 WHERE t1 MATCH 'aa'"
64 3 "SELECT docid, * FROM t1 WHERE t1 MATCH 'a*'"
65 4 "SELECT docid, quote(matchinfo(t1)) FROM t1 WHERE t1 MATCH 'a*'"
66 5 "SELECT docid, quote(matchinfo(t1,'pcnxals')) FROM t1 WHERE t1 MATCH 'b*'"
67 6 "SELECT docid, * FROM t1 WHERE t1 MATCH 'a* b* c*'"
68 7 "SELECT docid, * FROM t1 WHERE t1 MATCH 'aa OR da'"
69 8 "SELECT docid, * FROM t1 WHERE t1 MATCH 'nosuchtoken'"
70 9 "SELECT docid, snippet(t1) FROM t1 WHERE t1 MATCH 'aa OR da'"
71 10 "SELECT docid, snippet(t1) FROM t1 WHERE t1 MATCH 'aa OR nosuchtoken'"
72 11 "SELECT docid, snippet(t1) FROM t1 WHERE t1 MATCH 'aa NEAR bb'"
73 12 "SELECT docid, snippet(t1) FROM t1 WHERE t1 MATCH '\"aa bb\"'"
74 13 "SELECT docid, content FROM t1 WHERE t1 MATCH 'aa NEAR/2 bb NEAR/3 cc'"
75 14 "SELECT docid, content FROM t1 WHERE t1 MATCH '\"aa bb cc\"'"
76 } {
77
78 unset -nocomplain A B C D
79 set A_list [list]
80 set B_list [list]
81 set C_list [list]
82 set D_list [list]
83
84 unset -nocomplain X
85 db eval "$query ORDER BY rowid ASC" X {
86 set A($X(docid)) [array get X]
87 lappend A_list $X(docid)
88 }
89 unset -nocomplain X
90 db eval "$query ORDER BY rowid DESC" X {
91 set B($X(docid)) [array get X]
92 lappend B_list $X(docid)
93 }
94 unset -nocomplain X
95 db eval "$query ORDER BY docid ASC" X {
96 set C($X(docid)) [array get X]
97 lappend C_list $X(docid)
98 }
99 unset -nocomplain X
100 db eval "$query ORDER BY docid DESC" X {
101 set D($X(docid)) [array get X]
102 lappend D_list $X(docid)
103 }
104
105 do_test $tn.1 { set A_list } [lsort -integer -increasing $A_list]
106 do_test $tn.2 { set B_list } [lsort -integer -decreasing $B_list]
107 do_test $tn.3 { set C_list } [lsort -integer -increasing $C_list]
108 do_test $tn.4 { set D_list } [lsort -integer -decreasing $D_list]
109
110 unset -nocomplain DATA
111 unset -nocomplain X
112 db eval "$query" X {
113 set DATA($X(docid)) [array get X]
114 }
115
116 do_test $tn.5 { lsort [array get A] } [lsort [array get DATA]]
117 do_test $tn.6 { lsort [array get B] } [lsort [array get DATA]]
118 do_test $tn.7 { lsort [array get C] } [lsort [array get DATA]]
119 do_test $tn.8 { lsort [array get D] } [lsort [array get DATA]]
120
121 if {[info exists CONTROL($tn)]} {
122 do_test $tn.9 { set CONTROL($tn) } [lsort [array get DATA]]
123 } else {
124 set CONTROL($tn) [lsort [array get DATA]]
125 }
126 }
127 }
128 unset -nocomplain CONTROL
129
130 set testprefix fts3sort
131
132 #-------------------------------------------------------------------------
133 # Tests for parsing the "order=asc" and "order=desc" directives.
134 #
135 foreach {tn param res} {
136 1 "order=asc" {0 {}}
137 2 "order=desc" {0 {}}
138 3 "order=dec" {1 {unrecognized order: dec}}
139 4 "order=xxx, order=asc" {1 {unrecognized order: xxx}}
140 5 "order=desc, order=asc" {0 {}}
141 6 "order=xxxx, order=asc" {1 {unrecognized order: xxxx}}
142 7 "order=desk" {1 {unrecognized order: desk}}
143 } {
144 execsql { DROP TABLE IF EXISTS t1 }
145 do_catchsql_test 2.1.$tn "
146 CREATE VIRTUAL TABLE t1 USING fts4(a, b, $param)
147 " $res
148 }
149
150 do_execsql_test 2.2 {
151 BEGIN;
152 CREATE VIRTUAL TABLE t2 USING fts4(order=desc);
153 INSERT INTO t2 VALUES('aa bb');
154 INSERT INTO t2 VALUES('bb cc');
155 INSERT INTO t2 VALUES('cc aa');
156 SELECT docid FROM t2 WHERE t2 MATCH 'aa';
157 END;
158 } {3 1}
159 do_execsql_test 2.3 {
160 SELECT docid FROM t2 WHERE t2 MATCH 'aa';
161 } {3 1}
162 do_execsql_test 2.4 {
163 SELECT docid FROM t2 WHERE t2 MATCH 'aa' ORDER BY content;
164 } {1 3}
165
166 #-------------------------------------------------------------------------
167 # Test that ticket [56be976859] has been fixed.
168 #
169 do_execsql_test 3.1 {
170 CREATE VIRTUAL TABLE t3 USING fts4(x, order=DESC);
171 INSERT INTO t3(docid, x) VALUES(113382409004785664, 'aa');
172 INSERT INTO t3(docid, x) VALUES(1, 'ab');
173 SELECT rowid FROM t3 WHERE x MATCH 'a*' ORDER BY docid DESC;
174 } {113382409004785664 1}
175 do_execsql_test 3.2 {
176 CREATE VIRTUAL TABLE t4 USING fts4(x);
177 INSERT INTO t4(docid, x) VALUES(-113382409004785664, 'aa');
178 INSERT INTO t4(docid, x) VALUES(1, 'ab');
179 SELECT rowid FROM t4 WHERE x MATCH 'a*';
180 } {-113382409004785664 1}
181
182
183
184 finish_test
OLDNEW
« no previous file with comments | « third_party/sqlite/src/test/fts3snippet.test ('k') | third_party/sqlite/src/test/fts3tok1.test » ('j') | no next file with comments »

Powered by Google App Engine