storage/test/unit/test_like.js

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 // This file tests our LIKE implementation since we override it for unicode
     7 function setup()
     8 {
     9   getOpenedDatabase().createTable("t1", "x TEXT");
    11   var stmt = createStatement("INSERT INTO t1 (x) VALUES ('a')");
    12   stmt.execute();
    13   stmt.finalize();
    15   stmt = createStatement("INSERT INTO t1 (x) VALUES ('ab')");
    16   stmt.execute();
    17   stmt.finalize();
    19   stmt = createStatement("INSERT INTO t1 (x) VALUES ('abc')");
    20   stmt.execute();
    21   stmt.finalize();
    23   stmt = createStatement("INSERT INTO t1 (x) VALUES ('abcd')");
    24   stmt.execute();
    25   stmt.finalize();
    27   stmt = createStatement("INSERT INTO t1 (x) VALUES ('acd')");
    28   stmt.execute();
    29   stmt.finalize();
    31   stmt = createStatement("INSERT INTO t1 (x) VALUES ('abd')");
    32   stmt.execute();
    33   stmt.finalize();
    35   stmt = createStatement("INSERT INTO t1 (x) VALUES ('bc')");
    36   stmt.execute();
    37   stmt.finalize();
    39   stmt = createStatement("INSERT INTO t1 (x) VALUES ('bcd')");
    40   stmt.execute();
    41   stmt.finalize();
    43   stmt = createStatement("INSERT INTO t1 (x) VALUES ('xyz')");
    44   stmt.execute();
    45   stmt.finalize();
    47   stmt = createStatement("INSERT INTO t1 (x) VALUES ('ABC')");
    48   stmt.execute();
    49   stmt.finalize();
    51   stmt = createStatement("INSERT INTO t1 (x) VALUES ('CDE')");
    52   stmt.execute();
    53   stmt.finalize();
    55   stmt = createStatement("INSERT INTO t1 (x) VALUES ('ABC abc xyz')");
    56   stmt.execute();
    57   stmt.finalize();
    58 }
    60 function test_count()
    61 {
    62   var stmt = createStatement("SELECT count(*) FROM t1;");
    63   do_check_true(stmt.executeStep());
    64   do_check_eq(stmt.getInt32(0), 12);
    65   stmt.reset();
    66   stmt.finalize();
    67 }
    69 function test_like_1()
    70 {
    71   var stmt = createStatement("SELECT x FROM t1 WHERE x LIKE ?;");
    72   stmt.bindByIndex(0, 'abc');
    73   var solutions = ["abc", "ABC"];
    74   do_check_true(stmt.executeStep());
    75   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
    76   do_check_true(stmt.executeStep());
    77   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
    78   do_check_false(stmt.executeStep());
    79   stmt.reset();
    80   stmt.finalize();
    81 }
    83 function test_like_2()
    84 {
    85   var stmt = createStatement("SELECT x FROM t1 WHERE x LIKE ?;");
    86   stmt.bindByIndex(0, 'ABC');
    87   var solutions = ["abc", "ABC"];
    88   do_check_true(stmt.executeStep());
    89   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
    90   do_check_true(stmt.executeStep());
    91   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
    92   do_check_false(stmt.executeStep());
    93   stmt.reset();
    94   stmt.finalize();
    95 }
    97 function test_like_3()
    98 {
    99   var stmt = createStatement("SELECT x FROM t1 WHERE x LIKE ?;");
   100   stmt.bindByIndex(0, 'aBc');
   101   var solutions = ["abc", "ABC"];
   102   do_check_true(stmt.executeStep());
   103   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
   104   do_check_true(stmt.executeStep());
   105   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
   106   do_check_false(stmt.executeStep());
   107   stmt.reset();
   108   stmt.finalize();
   109 }
   111 function test_like_4()
   112 {
   113   var stmt = createStatement("SELECT x FROM t1 WHERE x LIKE ?;");
   114   stmt.bindByIndex(0, 'abc%');
   115   var solutions = ["abc", "abcd", "ABC", "ABC abc xyz"];
   116   do_check_true(stmt.executeStep());
   117   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
   118   do_check_true(stmt.executeStep());
   119   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
   120   do_check_true(stmt.executeStep());
   121   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
   122   do_check_true(stmt.executeStep());
   123   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
   124   do_check_false(stmt.executeStep());
   125   stmt.reset();
   126   stmt.finalize();
   127 }
   129 function test_like_5()
   130 {
   131   var stmt = createStatement("SELECT x FROM t1 WHERE x LIKE ?;");
   132   stmt.bindByIndex(0, 'a_c');
   133   var solutions = ["abc", "ABC"];
   134   do_check_true(stmt.executeStep());
   135   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
   136   do_check_true(stmt.executeStep());
   137   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
   138   do_check_false(stmt.executeStep());
   139   stmt.reset();
   140   stmt.finalize();
   141 }
   143 function test_like_6()
   144 {
   145   var stmt = createStatement("SELECT x FROM t1 WHERE x LIKE ?;");
   146   stmt.bindByIndex(0, 'ab%d');
   147   var solutions = ["abcd", "abd"];
   148   do_check_true(stmt.executeStep());
   149   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
   150   do_check_true(stmt.executeStep());
   151   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
   152   do_check_false(stmt.executeStep());
   153   stmt.reset();
   154   stmt.finalize();
   155 }
   157 function test_like_7()
   158 {
   159   var stmt = createStatement("SELECT x FROM t1 WHERE x LIKE ?;");
   160   stmt.bindByIndex(0, 'a_c%');
   161   var solutions = ["abc", "abcd", "ABC", "ABC abc xyz"];
   162   do_check_true(stmt.executeStep());
   163   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
   164   do_check_true(stmt.executeStep());
   165   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
   166   do_check_true(stmt.executeStep());
   167   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
   168   do_check_true(stmt.executeStep());
   169   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
   170   do_check_false(stmt.executeStep());
   171   stmt.reset();
   172   stmt.finalize();
   173 }
   175 function test_like_8()
   176 {
   177   var stmt = createStatement("SELECT x FROM t1 WHERE x LIKE ?;");
   178   stmt.bindByIndex(0, '%bcd');
   179   var solutions = ["abcd", "bcd"];
   180   do_check_true(stmt.executeStep());
   181   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
   182   do_check_true(stmt.executeStep());
   183   do_check_true(solutions.indexOf(stmt.getString(0)) != -1);
   184   do_check_false(stmt.executeStep());
   185   stmt.reset();
   186   stmt.finalize();
   187 }
   189 var tests = [test_count, test_like_1, test_like_2, test_like_3, test_like_4, 
   190              test_like_5, test_like_6, test_like_7, test_like_8];
   192 function run_test()
   193 {
   194   setup();
   196   for (var i = 0; i < tests.length; i++)
   197     tests[i]();
   199   cleanup();
   200 }

mercurial