persistentstorage/sqlite3api/TEST/TclScript/collateA.test
changeset 0 08ec8eefde2f
equal deleted inserted replaced
-1:000000000000 0:08ec8eefde2f
       
     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.3 2008/04/15 04:02:41 drh Exp $
       
    17 
       
    18 set testdir [file dirname $argv0]
       
    19 source $testdir/tester.tcl
       
    20 
       
    21 do_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, 'abcde','abcde');
       
    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     INSERT INTO t1 VALUES(5, '   ', '   ');
       
    33     INSERT INTO t1 VALUES(6, '', '');
       
    34     SELECT count(*) FROM t1;
       
    35   }
       
    36 } {6}
       
    37 do_test collateA-1.2 {
       
    38   execsql {SELECT a FROM t1 WHERE b='abcde     '}
       
    39 } {}
       
    40 do_test collateA-1.3 {
       
    41   execsql {SELECT a FROM t1 WHERE c='abcde     '}
       
    42 } {1}
       
    43 do_test collateA-1.4 {
       
    44   execsql {SELECT a FROM t1 WHERE b='xyzzy'}
       
    45 } {}
       
    46 do_test collateA-1.5 {
       
    47   execsql {SELECT a FROM t1 WHERE c='xyzzy'}
       
    48 } {2 3 4}
       
    49 do_test collateA-1.6 {
       
    50   execsql {SELECT a FROM t1 WHERE c='xyzzy '}
       
    51 } {2 3 4}
       
    52 do_test collateA-1.7 {
       
    53   execsql {SELECT a FROM t1 WHERE c='xyzzy  '}
       
    54 } {2 3 4}
       
    55 do_test collateA-1.8 {
       
    56   execsql {SELECT a FROM t1 WHERE c='xyzzy   '}
       
    57 } {2 3 4}
       
    58 do_test collateA-1.9 {
       
    59   execsql {SELECT a FROM t1 WHERE c='xyzzy    '}
       
    60 } {2 3 4}
       
    61 do_test collateA-1.10 {
       
    62   execsql {SELECT a FROM t1 WHERE c='xyzzy                                  '}
       
    63 } {2 3 4}
       
    64 do_test collateA-1.11 {
       
    65   execsql {SELECT 'abc123'='abc123                         ' COLLATE RTRIM;}
       
    66 } {1}
       
    67 do_test collateA-1.12 {
       
    68   execsql {SELECT 'abc123                         '='abc123' COLLATE RTRIM;}
       
    69 } {1}
       
    70 do_test collateA-1.13 {
       
    71   execsql {SELECT '  '='' COLLATE RTRIM, '  '='' COLLATE BINARY, '  '=''}
       
    72 } {1 0 0}
       
    73 do_test collateA-1.14 {
       
    74   execsql {SELECT ''='  ' COLLATE RTRIM, ''='  ' COLLATE BINARY, ''='  '}
       
    75 } {1 0 0}
       
    76 do_test collateA-1.15 {
       
    77   execsql {SELECT '  '='      ' COLLATE RTRIM, '  '='        '}
       
    78 } {1 0}
       
    79 do_test collateA-1.16 {
       
    80   execsql {SELECT ''<>'  ' COLLATE RTRIM, ''<>'  ' COLLATE BINARY, ''<>'  '}
       
    81 } {0 1 1}
       
    82 do_test collateA-1.17 {
       
    83   execsql {SELECT a FROM t1 WHERE c='xyzz'}
       
    84 } {}
       
    85 do_test collateA-1.18 {
       
    86   execsql {SELECT a FROM t1 WHERE c='xyzzyy   '}
       
    87 } {}
       
    88 do_test collateA-1.19 {
       
    89   execsql {SELECT a FROM t1 WHERE c='xyzz   '}
       
    90 } {}
       
    91 do_test collateA-1.20 {
       
    92   execsql {SELECT a FROM t1 WHERE c='abcd   '}
       
    93 } {}
       
    94 do_test collateA-1.21 {
       
    95   execsql {SELECT a FROM t1 WHERE c='abcd'}
       
    96 } {}
       
    97 do_test collateA-1.22 {
       
    98   execsql {SELECT a FROM t1 WHERE c='abc'}
       
    99 } {}
       
   100 do_test collateA-1.23 {
       
   101   execsql {SELECT a FROM t1 WHERE c='abcdef    '}
       
   102 } {}
       
   103 do_test collateA-1.24 {
       
   104   execsql {SELECT a FROM t1 WHERE c=''}
       
   105 } {5 6}
       
   106 do_test collateA-1.25 {
       
   107   execsql {SELECT a FROM t1 WHERE c=' '}
       
   108 } {5 6}
       
   109 do_test collateA-1.26 {
       
   110   execsql {SELECT a FROM t1 WHERE c='                    '}
       
   111 } {5 6}
       
   112 
       
   113 
       
   114 do_test collateA-2.1 {
       
   115   execsql {
       
   116     CREATE INDEX i1b ON t1(b);
       
   117     CREATE INDEX i1c ON t1(c);
       
   118     PRAGMA integrity_check;
       
   119   }
       
   120 } {ok}
       
   121 do_test collateA-2.2 {
       
   122   execsql {SELECT a FROM t1 WHERE b='abcde     '}
       
   123 } {}
       
   124 do_test collateA-2.3 {
       
   125   execsql {SELECT a FROM t1 WHERE c='abcde     '}
       
   126 } {1}
       
   127 do_test collateA-2.4 {
       
   128   execsql {SELECT a FROM t1 WHERE b='xyzzy'}
       
   129 } {}
       
   130 do_test collateA-2.5 {
       
   131   execsql {SELECT a FROM t1 WHERE c='xyzzy'}
       
   132 } {2 3 4}
       
   133 do_test collateA-2.6 {
       
   134   execsql {SELECT a FROM t1 WHERE c='xyzzy '}
       
   135 } {2 3 4}
       
   136 do_test collateA-2.7 {
       
   137   execsql {SELECT a FROM t1 WHERE c='xyzzy  '}
       
   138 } {2 3 4}
       
   139 do_test collateA-2.8 {
       
   140   execsql {SELECT a FROM t1 WHERE c='xyzzy   '}
       
   141 } {2 3 4}
       
   142 do_test collateA-2.9 {
       
   143   execsql {SELECT a FROM t1 WHERE c='xyzzy    '}
       
   144 } {2 3 4}
       
   145 do_test collateA-2.10 {
       
   146   execsql {SELECT a FROM t1 WHERE c='xyzzy                                  '}
       
   147 } {2 3 4}
       
   148 do_test collateA-2.17 {
       
   149   execsql {SELECT a FROM t1 WHERE c='xyzz'}
       
   150 } {}
       
   151 do_test collateA-2.18 {
       
   152   execsql {SELECT a FROM t1 WHERE c='xyzzyy   '}
       
   153 } {}
       
   154 do_test collateA-2.19 {
       
   155   execsql {SELECT a FROM t1 WHERE c='xyzz   '}
       
   156 } {}
       
   157 do_test collateA-2.20 {
       
   158   execsql {SELECT a FROM t1 WHERE c='abcd   '}
       
   159 } {}
       
   160 do_test collateA-2.21 {
       
   161   execsql {SELECT a FROM t1 WHERE c='abcd'}
       
   162 } {}
       
   163 do_test collateA-2.22 {
       
   164   execsql {SELECT a FROM t1 WHERE c='abc'}
       
   165 } {}
       
   166 do_test collateA-2.23 {
       
   167   execsql {SELECT a FROM t1 WHERE c='abcdef    '}
       
   168 } {}
       
   169 do_test collateA-2.24 {
       
   170   execsql {SELECT a FROM t1 WHERE c=''}
       
   171 } {5 6}
       
   172 do_test collateA-2.25 {
       
   173   execsql {SELECT a FROM t1 WHERE c=' '}
       
   174 } {5 6}
       
   175 do_test collateA-2.26 {
       
   176   execsql {SELECT a FROM t1 WHERE c='                    '}
       
   177 } {5 6}
       
   178 
       
   179 
       
   180 do_test collateA-3.1 {
       
   181   db close
       
   182   sqlite3 db test.db
       
   183   execsql {
       
   184     REINDEX;
       
   185     PRAGMA integrity_check;
       
   186   }
       
   187 } {ok}
       
   188 do_test collateA-3.2 {
       
   189   execsql {SELECT a FROM t1 WHERE b='abcde     '}
       
   190 } {}
       
   191 do_test collateA-3.3 {
       
   192   execsql {SELECT a FROM t1 WHERE c='abcde     '}
       
   193 } {1}
       
   194 do_test collateA-3.4 {
       
   195   execsql {SELECT a FROM t1 WHERE b='xyzzy'}
       
   196 } {}
       
   197 do_test collateA-3.5 {
       
   198   execsql {SELECT a FROM t1 WHERE c='xyzzy'}
       
   199 } {2 3 4}
       
   200 do_test collateA-3.6 {
       
   201   execsql {SELECT a FROM t1 WHERE c='xyzzy '}
       
   202 } {2 3 4}
       
   203 do_test collateA-3.7 {
       
   204   execsql {SELECT a FROM t1 WHERE c='xyzzy  '}
       
   205 } {2 3 4}
       
   206 do_test collateA-3.8 {
       
   207   execsql {SELECT a FROM t1 WHERE c='xyzzy   '}
       
   208 } {2 3 4}
       
   209 do_test collateA-3.9 {
       
   210   execsql {SELECT a FROM t1 WHERE c='xyzzy    '}
       
   211 } {2 3 4}
       
   212 do_test collateA-3.10 {
       
   213   execsql {SELECT a FROM t1 WHERE c='xyzzy                                  '}
       
   214 } {2 3 4}
       
   215 
       
   216 
       
   217 finish_test