Files
tubestation/mobile/android/tests/browser/robocop/testDBUtils.java

71 lines
3.0 KiB
Java

/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.gecko.tests;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import org.mozilla.gecko.db.DBUtils;
import java.io.File;
import java.io.IOException;
public class testDBUtils extends BaseTest {
public void testDBUtils() throws IOException {
final File cacheDir = getInstrumentation().getContext().getCacheDir();
final File dbFile = File.createTempFile("testDBUtils", ".db", cacheDir);
final SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbFile, null);
try {
mAsserter.ok(db != null, "Created DB.", null);
db.execSQL("CREATE TABLE foo (x INTEGER NOT NULL DEFAULT 0, y TEXT)");
final ContentValues v = new ContentValues();
v.put("x", 5);
v.put("y", "a");
db.insert("foo", null, v);
v.put("x", 2);
v.putNull("y");
db.insert("foo", null, v);
v.put("x", 3);
v.put("y", "z");
db.insert("foo", null, v);
DBUtils.UpdateOperation[] ops = {DBUtils.UpdateOperation.BITWISE_OR, DBUtils.UpdateOperation.ASSIGN};
ContentValues[] values = {new ContentValues(), new ContentValues()};
values[0].put("x", 0xff);
values[1].put("y", "hello");
final int updated = DBUtils.updateArrays(db, "foo", values, ops, "x >= 3", null);
mAsserter.ok(updated == 2, "Updated two rows.", null);
final Cursor out = db.query("foo", new String[]{"x", "y"}, null, null, null, null, "x");
try {
mAsserter.ok(out.moveToNext(), "Has first result.", null);
mAsserter.ok(2 == out.getInt(0), "1: First column was untouched.", null);
mAsserter.ok(out.isNull(1), "1: Second column was untouched.", null);
mAsserter.ok(out.moveToNext(), "Has second result.", null);
mAsserter.ok((0xff | 3) == out.getInt(0), "2: First column was ORed correctly.", null);
mAsserter.ok("hello".equals(out.getString(1)), "2: Second column was assigned correctly.", null);
mAsserter.ok(out.moveToNext(), "Has third result.", null);
mAsserter.ok((0xff | 5) == out.getInt(0), "3: First column was ORed correctly.", null);
mAsserter.ok("hello".equals(out.getString(1)), "3: Second column was assigned correctly.", null);
mAsserter.ok(!out.moveToNext(), "No more results.", null);
} finally {
out.close();
}
} finally {
try {
db.close();
} catch (Exception e) {
}
dbFile.delete();
}
}
}