michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: // This file tests the unicode functions that we have added michael@0: michael@0: const LATIN1_AE = "\xc6"; // "Æ" michael@0: const LATIN1_ae = "\xe6"; // "æ" michael@0: michael@0: function setup() michael@0: { michael@0: getOpenedDatabase().createTable("test", "id INTEGER PRIMARY KEY, name TEXT"); michael@0: michael@0: var stmt = createStatement("INSERT INTO test (name, id) VALUES (?1, ?2)"); michael@0: stmt.bindByIndex(0, LATIN1_AE); michael@0: stmt.bindByIndex(1, 1); michael@0: stmt.execute(); michael@0: stmt.bindByIndex(0, "A"); michael@0: stmt.bindByIndex(1, 2); michael@0: stmt.execute(); michael@0: stmt.bindByIndex(0, "b"); michael@0: stmt.bindByIndex(1, 3); michael@0: stmt.execute(); michael@0: stmt.bindByIndex(0, LATIN1_ae); michael@0: stmt.bindByIndex(1, 4); michael@0: stmt.execute(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_upper_ascii() michael@0: { michael@0: var stmt = createStatement("SELECT name, id FROM test WHERE name = upper('a')"); michael@0: do_check_true(stmt.executeStep()); michael@0: do_check_eq("A", stmt.getString(0)); michael@0: do_check_eq(2, stmt.getInt32(1)); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_upper_non_ascii() michael@0: { michael@0: var stmt = createStatement("SELECT name, id FROM test WHERE name = upper(?1)"); michael@0: stmt.bindByIndex(0, LATIN1_ae); michael@0: do_check_true(stmt.executeStep()); michael@0: do_check_eq(LATIN1_AE, stmt.getString(0)); michael@0: do_check_eq(1, stmt.getInt32(1)); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_lower_ascii() michael@0: { michael@0: var stmt = createStatement("SELECT name, id FROM test WHERE name = lower('B')"); michael@0: do_check_true(stmt.executeStep()); michael@0: do_check_eq("b", stmt.getString(0)); michael@0: do_check_eq(3, stmt.getInt32(1)); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_lower_non_ascii() michael@0: { michael@0: var stmt = createStatement("SELECT name, id FROM test WHERE name = lower(?1)"); michael@0: stmt.bindByIndex(0, LATIN1_AE); michael@0: do_check_true(stmt.executeStep()); michael@0: do_check_eq(LATIN1_ae, stmt.getString(0)); michael@0: do_check_eq(4, stmt.getInt32(1)); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_like_search_different() michael@0: { michael@0: var stmt = createStatement("SELECT COUNT(*) FROM test WHERE name LIKE ?1"); michael@0: stmt.bindByIndex(0, LATIN1_AE); michael@0: do_check_true(stmt.executeStep()); michael@0: do_check_eq(2, stmt.getInt32(0)); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_like_search_same() michael@0: { michael@0: var stmt = createStatement("SELECT COUNT(*) FROM test WHERE name LIKE ?1"); michael@0: stmt.bindByIndex(0, LATIN1_ae); michael@0: do_check_true(stmt.executeStep()); michael@0: do_check_eq(2, stmt.getInt32(0)); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: var tests = [test_upper_ascii, test_upper_non_ascii, test_lower_ascii, michael@0: test_lower_non_ascii, test_like_search_different, michael@0: test_like_search_same]; michael@0: michael@0: function run_test() michael@0: { michael@0: setup(); michael@0: michael@0: for (var i = 0; i < tests.length; i++) michael@0: tests[i](); michael@0: michael@0: cleanup(); michael@0: } michael@0: