1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/storage/test/unit/test_like.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,201 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +// This file tests our LIKE implementation since we override it for unicode 1.9 + 1.10 +function setup() 1.11 +{ 1.12 + getOpenedDatabase().createTable("t1", "x TEXT"); 1.13 + 1.14 + var stmt = createStatement("INSERT INTO t1 (x) VALUES ('a')"); 1.15 + stmt.execute(); 1.16 + stmt.finalize(); 1.17 + 1.18 + stmt = createStatement("INSERT INTO t1 (x) VALUES ('ab')"); 1.19 + stmt.execute(); 1.20 + stmt.finalize(); 1.21 + 1.22 + stmt = createStatement("INSERT INTO t1 (x) VALUES ('abc')"); 1.23 + stmt.execute(); 1.24 + stmt.finalize(); 1.25 + 1.26 + stmt = createStatement("INSERT INTO t1 (x) VALUES ('abcd')"); 1.27 + stmt.execute(); 1.28 + stmt.finalize(); 1.29 + 1.30 + stmt = createStatement("INSERT INTO t1 (x) VALUES ('acd')"); 1.31 + stmt.execute(); 1.32 + stmt.finalize(); 1.33 + 1.34 + stmt = createStatement("INSERT INTO t1 (x) VALUES ('abd')"); 1.35 + stmt.execute(); 1.36 + stmt.finalize(); 1.37 + 1.38 + stmt = createStatement("INSERT INTO t1 (x) VALUES ('bc')"); 1.39 + stmt.execute(); 1.40 + stmt.finalize(); 1.41 + 1.42 + stmt = createStatement("INSERT INTO t1 (x) VALUES ('bcd')"); 1.43 + stmt.execute(); 1.44 + stmt.finalize(); 1.45 + 1.46 + stmt = createStatement("INSERT INTO t1 (x) VALUES ('xyz')"); 1.47 + stmt.execute(); 1.48 + stmt.finalize(); 1.49 + 1.50 + stmt = createStatement("INSERT INTO t1 (x) VALUES ('ABC')"); 1.51 + stmt.execute(); 1.52 + stmt.finalize(); 1.53 + 1.54 + stmt = createStatement("INSERT INTO t1 (x) VALUES ('CDE')"); 1.55 + stmt.execute(); 1.56 + stmt.finalize(); 1.57 + 1.58 + stmt = createStatement("INSERT INTO t1 (x) VALUES ('ABC abc xyz')"); 1.59 + stmt.execute(); 1.60 + stmt.finalize(); 1.61 +} 1.62 + 1.63 +function test_count() 1.64 +{ 1.65 + var stmt = createStatement("SELECT count(*) FROM t1;"); 1.66 + do_check_true(stmt.executeStep()); 1.67 + do_check_eq(stmt.getInt32(0), 12); 1.68 + stmt.reset(); 1.69 + stmt.finalize(); 1.70 +} 1.71 + 1.72 +function test_like_1() 1.73 +{ 1.74 + var stmt = createStatement("SELECT x FROM t1 WHERE x LIKE ?;"); 1.75 + stmt.bindByIndex(0, 'abc'); 1.76 + var solutions = ["abc", "ABC"]; 1.77 + do_check_true(stmt.executeStep()); 1.78 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.79 + do_check_true(stmt.executeStep()); 1.80 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.81 + do_check_false(stmt.executeStep()); 1.82 + stmt.reset(); 1.83 + stmt.finalize(); 1.84 +} 1.85 + 1.86 +function test_like_2() 1.87 +{ 1.88 + var stmt = createStatement("SELECT x FROM t1 WHERE x LIKE ?;"); 1.89 + stmt.bindByIndex(0, 'ABC'); 1.90 + var solutions = ["abc", "ABC"]; 1.91 + do_check_true(stmt.executeStep()); 1.92 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.93 + do_check_true(stmt.executeStep()); 1.94 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.95 + do_check_false(stmt.executeStep()); 1.96 + stmt.reset(); 1.97 + stmt.finalize(); 1.98 +} 1.99 + 1.100 +function test_like_3() 1.101 +{ 1.102 + var stmt = createStatement("SELECT x FROM t1 WHERE x LIKE ?;"); 1.103 + stmt.bindByIndex(0, 'aBc'); 1.104 + var solutions = ["abc", "ABC"]; 1.105 + do_check_true(stmt.executeStep()); 1.106 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.107 + do_check_true(stmt.executeStep()); 1.108 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.109 + do_check_false(stmt.executeStep()); 1.110 + stmt.reset(); 1.111 + stmt.finalize(); 1.112 +} 1.113 + 1.114 +function test_like_4() 1.115 +{ 1.116 + var stmt = createStatement("SELECT x FROM t1 WHERE x LIKE ?;"); 1.117 + stmt.bindByIndex(0, 'abc%'); 1.118 + var solutions = ["abc", "abcd", "ABC", "ABC abc xyz"]; 1.119 + do_check_true(stmt.executeStep()); 1.120 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.121 + do_check_true(stmt.executeStep()); 1.122 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.123 + do_check_true(stmt.executeStep()); 1.124 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.125 + do_check_true(stmt.executeStep()); 1.126 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.127 + do_check_false(stmt.executeStep()); 1.128 + stmt.reset(); 1.129 + stmt.finalize(); 1.130 +} 1.131 + 1.132 +function test_like_5() 1.133 +{ 1.134 + var stmt = createStatement("SELECT x FROM t1 WHERE x LIKE ?;"); 1.135 + stmt.bindByIndex(0, 'a_c'); 1.136 + var solutions = ["abc", "ABC"]; 1.137 + do_check_true(stmt.executeStep()); 1.138 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.139 + do_check_true(stmt.executeStep()); 1.140 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.141 + do_check_false(stmt.executeStep()); 1.142 + stmt.reset(); 1.143 + stmt.finalize(); 1.144 +} 1.145 + 1.146 +function test_like_6() 1.147 +{ 1.148 + var stmt = createStatement("SELECT x FROM t1 WHERE x LIKE ?;"); 1.149 + stmt.bindByIndex(0, 'ab%d'); 1.150 + var solutions = ["abcd", "abd"]; 1.151 + do_check_true(stmt.executeStep()); 1.152 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.153 + do_check_true(stmt.executeStep()); 1.154 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.155 + do_check_false(stmt.executeStep()); 1.156 + stmt.reset(); 1.157 + stmt.finalize(); 1.158 +} 1.159 + 1.160 +function test_like_7() 1.161 +{ 1.162 + var stmt = createStatement("SELECT x FROM t1 WHERE x LIKE ?;"); 1.163 + stmt.bindByIndex(0, 'a_c%'); 1.164 + var solutions = ["abc", "abcd", "ABC", "ABC abc xyz"]; 1.165 + do_check_true(stmt.executeStep()); 1.166 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.167 + do_check_true(stmt.executeStep()); 1.168 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.169 + do_check_true(stmt.executeStep()); 1.170 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.171 + do_check_true(stmt.executeStep()); 1.172 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.173 + do_check_false(stmt.executeStep()); 1.174 + stmt.reset(); 1.175 + stmt.finalize(); 1.176 +} 1.177 + 1.178 +function test_like_8() 1.179 +{ 1.180 + var stmt = createStatement("SELECT x FROM t1 WHERE x LIKE ?;"); 1.181 + stmt.bindByIndex(0, '%bcd'); 1.182 + var solutions = ["abcd", "bcd"]; 1.183 + do_check_true(stmt.executeStep()); 1.184 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.185 + do_check_true(stmt.executeStep()); 1.186 + do_check_true(solutions.indexOf(stmt.getString(0)) != -1); 1.187 + do_check_false(stmt.executeStep()); 1.188 + stmt.reset(); 1.189 + stmt.finalize(); 1.190 +} 1.191 + 1.192 +var tests = [test_count, test_like_1, test_like_2, test_like_3, test_like_4, 1.193 + test_like_5, test_like_6, test_like_7, test_like_8]; 1.194 + 1.195 +function run_test() 1.196 +{ 1.197 + setup(); 1.198 + 1.199 + for (var i = 0; i < tests.length; i++) 1.200 + tests[i](); 1.201 + 1.202 + cleanup(); 1.203 +} 1.204 +