1# 2011 December 1
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#
12# Tests for the glob-style string compare operator embedded in the
13# quota shim.
14#
15
16set testdir [file dirname $argv0]
17source $testdir/tester.tcl
18
19catch { unset testnum }
20catch { unset pattern }
21catch { unset text }
22catch { unset ans }
23
24foreach {testnum pattern text ans} {
25   1  abcdefg   abcdefg   1
26   2  abcdefG   abcdefg   0
27   3  abcdef    abcdefg   0
28   4  abcdefgh  abcdefg   0
29   5  abcdef?   abcdefg   1
30   6  abcdef?   abcdef    0
31   7  abcdef?   abcdefgh  0
32   8  abcdefg   abcdef?   0
33   9  abcdef?   abcdef?   1
34  10  abc/def   abc/def   1
35  11  abc//def  abc/def   0
36  12  */abc/*   x/abc/y   1
37  13  */abc/*   /abc/     1
38  16  */abc/*   x///a/ab/abc   0
39  17  */abc/*   x//a/ab/abc/   1
40  16  */abc/*   x///a/ab/abc   0
41  17  */abc/*   x//a/ab/abc/   1
42  18  **/abc/** x//a/ab/abc/   1
43  19  *?/abc/*? x//a/ab/abc/y  1
44  20  ?*/abc/?* x//a/ab/abc/y  1
45  21  {abc[cde]efg}   abcbefg  0
46  22  {abc[cde]efg}   abccefg  1
47  23  {abc[cde]efg}   abcdefg  1
48  24  {abc[cde]efg}   abceefg  1
49  25  {abc[cde]efg}   abcfefg  0
50  26  {abc[^cde]efg}  abcbefg  1
51  27  {abc[^cde]efg}  abccefg  0
52  28  {abc[^cde]efg}  abcdefg  0
53  29  {abc[^cde]efg}  abceefg  0
54  30  {abc[^cde]efg}  abcfefg  1
55  31  {abc[c-e]efg}   abcbefg  0
56  32  {abc[c-e]efg}   abccefg  1
57  33  {abc[c-e]efg}   abcdefg  1
58  34  {abc[c-e]efg}   abceefg  1
59  35  {abc[c-e]efg}   abcfefg  0
60  36  {abc[^c-e]efg}  abcbefg  1
61  37  {abc[^c-e]efg}  abccefg  0
62  38  {abc[^c-e]efg}  abcdefg  0
63  39  {abc[^c-e]efg}  abceefg  0
64  40  {abc[^c-e]efg}  abcfefg  1
65  41  {abc[c-e]efg}   abc-efg  0
66  42  {abc[-ce]efg}   abc-efg  1
67  43  {abc[ce-]efg}   abc-efg  1
68  44  {abc[][*?]efg}  {abc]efg} 1
69  45  {abc[][*?]efg}  {abc*efg} 1
70  46  {abc[][*?]efg}  {abc?efg} 1
71  47  {abc[][*?]efg}  {abc[efg} 1
72  48  {abc[^][*?]efg} {abc]efg} 0
73  49  {abc[^][*?]efg} {abc*efg} 0
74  50  {abc[^][*?]efg} {abc?efg} 0
75  51  {abc[^][*?]efg} {abc[efg} 0
76  52  {abc[^][*?]efg} {abcdefg} 1
77  53  {*[xyz]efg}     {abcxefg} 1
78  54  {*[xyz]efg}     {abcwefg} 0
79} {
80  do_test quota-glob-$testnum.1 {
81    sqlite3_quota_glob $::pattern $::text
82  } $::ans
83  do_test quota-glob-$testnum.2 {
84    sqlite3_quota_glob $::pattern [string map {/ \\} $::text]
85  } $::ans
86}
87finish_test
88