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 functions of mozIStorageValueArray michael@0: michael@0: function setup() michael@0: { michael@0: getOpenedDatabase().createTable("test", "id INTEGER PRIMARY KEY, name TEXT," + michael@0: "number REAL, nuller NULL, blobber BLOB"); michael@0: michael@0: var stmt = createStatement("INSERT INTO test (name, number, blobber) " + michael@0: "VALUES (?1, ?2, ?3)"); michael@0: stmt.bindByIndex(0, "foo"); michael@0: stmt.bindByIndex(1, 2.34); michael@0: stmt.bindBlobByIndex(2, [], 0); michael@0: stmt.execute(); michael@0: michael@0: stmt.bindByIndex(0, ""); michael@0: stmt.bindByIndex(1, 1.23); michael@0: stmt.bindBlobByIndex(2, [1, 2], 2); michael@0: stmt.execute(); michael@0: michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_getIsNull_for_null() michael@0: { michael@0: var stmt = createStatement("SELECT nuller, blobber FROM test WHERE id = ?1"); michael@0: stmt.bindByIndex(0, 1); michael@0: do_check_true(stmt.executeStep()); michael@0: michael@0: do_check_true(stmt.getIsNull(0)); // null field michael@0: do_check_true(stmt.getIsNull(1)); // data is null if size is 0 michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_getIsNull_for_non_null() michael@0: { michael@0: var stmt = createStatement("SELECT name, blobber FROM test WHERE id = ?1"); michael@0: stmt.bindByIndex(0, 2); michael@0: do_check_true(stmt.executeStep()); michael@0: michael@0: do_check_false(stmt.getIsNull(0)); michael@0: do_check_false(stmt.getIsNull(1)); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_value_type_null() michael@0: { michael@0: var stmt = createStatement("SELECT nuller FROM test WHERE id = ?1"); michael@0: stmt.bindByIndex(0, 1); michael@0: do_check_true(stmt.executeStep()); michael@0: michael@0: do_check_eq(Ci.mozIStorageValueArray.VALUE_TYPE_NULL, michael@0: stmt.getTypeOfIndex(0)); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_value_type_integer() michael@0: { michael@0: var stmt = createStatement("SELECT id FROM test WHERE id = ?1"); michael@0: stmt.bindByIndex(0, 1); michael@0: do_check_true(stmt.executeStep()); michael@0: michael@0: do_check_eq(Ci.mozIStorageValueArray.VALUE_TYPE_INTEGER, michael@0: stmt.getTypeOfIndex(0)); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_value_type_float() michael@0: { michael@0: var stmt = createStatement("SELECT number FROM test WHERE id = ?1"); michael@0: stmt.bindByIndex(0, 1); michael@0: do_check_true(stmt.executeStep()); michael@0: michael@0: do_check_eq(Ci.mozIStorageValueArray.VALUE_TYPE_FLOAT, michael@0: stmt.getTypeOfIndex(0)); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_value_type_text() michael@0: { michael@0: var stmt = createStatement("SELECT name FROM test WHERE id = ?1"); michael@0: stmt.bindByIndex(0, 1); michael@0: do_check_true(stmt.executeStep()); michael@0: michael@0: do_check_eq(Ci.mozIStorageValueArray.VALUE_TYPE_TEXT, michael@0: stmt.getTypeOfIndex(0)); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_value_type_blob() michael@0: { michael@0: var stmt = createStatement("SELECT blobber FROM test WHERE id = ?1"); michael@0: stmt.bindByIndex(0, 2); michael@0: do_check_true(stmt.executeStep()); michael@0: michael@0: do_check_eq(Ci.mozIStorageValueArray.VALUE_TYPE_BLOB, michael@0: stmt.getTypeOfIndex(0)); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_numEntries_one() michael@0: { michael@0: var stmt = createStatement("SELECT blobber FROM test WHERE id = ?1"); michael@0: stmt.bindByIndex(0, 2); michael@0: do_check_true(stmt.executeStep()); michael@0: michael@0: do_check_eq(1, stmt.numEntries); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_numEntries_all() michael@0: { michael@0: var stmt = createStatement("SELECT * FROM test WHERE id = ?1"); michael@0: stmt.bindByIndex(0, 2); michael@0: do_check_true(stmt.executeStep()); michael@0: michael@0: do_check_eq(5, stmt.numEntries); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_getInt() michael@0: { michael@0: var stmt = createStatement("SELECT id FROM test WHERE id = ?1"); michael@0: stmt.bindByIndex(0, 2); michael@0: do_check_true(stmt.executeStep()); michael@0: michael@0: do_check_eq(2, stmt.getInt32(0)); michael@0: do_check_eq(2, stmt.getInt64(0)); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_getDouble() michael@0: { michael@0: var stmt = createStatement("SELECT number FROM test WHERE id = ?1"); michael@0: stmt.bindByIndex(0, 2); michael@0: do_check_true(stmt.executeStep()); michael@0: michael@0: do_check_eq(1.23, stmt.getDouble(0)); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_getUTF8String() michael@0: { michael@0: var stmt = createStatement("SELECT name FROM test WHERE id = ?1"); michael@0: stmt.bindByIndex(0, 1); michael@0: do_check_true(stmt.executeStep()); michael@0: michael@0: do_check_eq("foo", stmt.getUTF8String(0)); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_getString() michael@0: { michael@0: var stmt = createStatement("SELECT name FROM test WHERE id = ?1"); michael@0: stmt.bindByIndex(0, 2); michael@0: do_check_true(stmt.executeStep()); michael@0: michael@0: do_check_eq("", stmt.getString(0)); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: function test_getBlob() michael@0: { michael@0: var stmt = createStatement("SELECT blobber FROM test WHERE id = ?1"); michael@0: stmt.bindByIndex(0, 2); michael@0: do_check_true(stmt.executeStep()); michael@0: michael@0: var count = { value: 0 }; michael@0: var arr = { value: null }; michael@0: stmt.getBlob(0, count, arr); michael@0: do_check_eq(2, count.value); michael@0: do_check_eq(1, arr.value[0]); michael@0: do_check_eq(2, arr.value[1]); michael@0: stmt.reset(); michael@0: stmt.finalize(); michael@0: } michael@0: michael@0: var tests = [test_getIsNull_for_null, test_getIsNull_for_non_null, michael@0: test_value_type_null, test_value_type_integer, michael@0: test_value_type_float, test_value_type_text, test_value_type_blob, michael@0: test_numEntries_one, test_numEntries_all, test_getInt, michael@0: test_getDouble, test_getUTF8String, test_getString, test_getBlob]; 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: