summaryrefslogtreecommitdiffstats
path: root/tests/src
diff options
context:
space:
mode:
authorBjorn Bringert <bringert@android.com>2010-02-22 22:07:14 +0000
committerBjorn Bringert <bringert@android.com>2010-02-22 22:07:14 +0000
commitab1655e799a3b0a82cea62e05b4017c21ab53881 (patch)
treeeb95029aa304f4109e6d754a8c21ea859e7bb4b5 /tests/src
parente4c98469644d3fa2689cf6658b1999add13c7e0e (diff)
downloadpackages_apps_Browser-ab1655e799a3b0a82cea62e05b4017c21ab53881.zip
packages_apps_Browser-ab1655e799a3b0a82cea62e05b4017c21ab53881.tar.gz
packages_apps_Browser-ab1655e799a3b0a82cea62e05b4017c21ab53881.tar.bz2
Add some unit tests for BrowserProvider
This includes a test for http://b/issue?id=2152749 fails, since that bug has not yet been fixed. Change-Id: Ie2a71fe056528975279548f52c69953cef4dca1b
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/com/android/browser/BrowserProviderTests.java168
1 files changed, 168 insertions, 0 deletions
diff --git a/tests/src/com/android/browser/BrowserProviderTests.java b/tests/src/com/android/browser/BrowserProviderTests.java
new file mode 100644
index 0000000..f4bf942
--- /dev/null
+++ b/tests/src/com/android/browser/BrowserProviderTests.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import android.app.SearchManager;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.net.Uri;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+/**
+ * Unit tests for {@link BrowserProvider}.
+ */
+@MediumTest
+public class BrowserProviderTests extends AndroidTestCase {
+
+ private ArrayList<Uri> mDeleteUris;
+
+ @Override
+ protected void setUp() throws Exception {
+ mDeleteUris = new ArrayList<Uri>();
+ super.setUp();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ for (Uri uri : mDeleteUris) {
+ deleteUri(uri);
+ }
+ super.tearDown();
+ }
+
+ public void testHasDefaultBookmarks() {
+ Cursor c = getBookmarksSuggest("");
+ try {
+ assertTrue("No default bookmarks", c.getCount() > 0);
+ } finally {
+ c.close();
+ }
+ }
+
+ public void testPartialFirstTitleWord() {
+ assertInsertQuery("http://www.example.com/rasdfe", "nfgjra sdfywe", "nfgj");
+ }
+
+ public void testFullFirstTitleWord() {
+ assertInsertQuery("http://www.example.com/", "nfgjra dfger", "nfgjra");
+ }
+
+ public void testFullFirstTitleWordPartialSecond() {
+ assertInsertQuery("http://www.example.com/", "nfgjra dfger", "nfgjra df");
+ }
+
+ public void testFullTitle() {
+ assertInsertQuery("http://www.example.com/", "nfgjra dfger", "nfgjra dfger");
+ }
+
+// Not implemented in BrowserProvider
+// public void testFullSecondTitleWord() {
+// assertInsertQuery("http://www.example.com/rasdfe", "nfgjra sdfywe", "sdfywe");
+// }
+
+ public void testFullTitleJapanese() {
+ String title = "\u30ae\u30e3\u30e9\u30ea\u30fc\u30fcGoogle\u691c\u7d22";
+ assertInsertQuery("http://www.example.com/sdaga", title, title);
+ }
+
+ public void testPartialTitleJapanese() {
+ String title = "\u30ae\u30e3\u30e9\u30ea\u30fc\u30fcGoogle\u691c\u7d22";
+ String query = "\u30ae\u30e3\u30e9\u30ea\u30fc";
+ assertInsertQuery("http://www.example.com/sdaga", title, query);
+ }
+
+ // Test for http://b/issue?id=2152749
+ public void testSoundmarkTitleJapanese() {
+ String title = "\u30ae\u30e3\u30e9\u30ea\u30fc\u30fcGoogle\u691c\u7d22";
+ String query = "\u30ad\u30e3\u30e9\u30ea\u30fc";
+ assertInsertQuery("http://www.example.com/sdaga", title, query);
+ }
+
+ //
+ // Utilities
+ //
+
+ private void assertInsertQuery(String url, String title, String query) {
+ addBookmark(url, title);
+ assertQueryReturns(url, title, query);
+ }
+
+ private void assertQueryReturns(String url, String title, String query) {
+ Cursor c = getBookmarksSuggest(query);
+ try {
+ assertTrue(title + " not matched by " + query, c.getCount() > 0);
+ assertTrue("More than one result for " + query, c.getCount() == 1);
+ while (c.moveToNext()) {
+ String text1 = getCol(c, SearchManager.SUGGEST_COLUMN_TEXT_1);
+ assertNotNull(text1);
+ assertEquals("Bad title", title, text1);
+ String text2 = getCol(c, SearchManager.SUGGEST_COLUMN_TEXT_2);
+ assertNotNull(text2);
+ String data = getCol(c, SearchManager.SUGGEST_COLUMN_INTENT_DATA);
+ assertNotNull(data);
+ assertEquals("Bad URL", url, data);
+ }
+ } finally {
+ c.close();
+ }
+ }
+
+ private Cursor getBookmarksSuggest(String query) {
+ Uri suggestUri = Uri.parse("content://browser/bookmarks/search_suggest_query");
+ String[] selectionArgs = { query };
+ Cursor c = getContext().getContentResolver().query(suggestUri, null, "url LIKE ?",
+ selectionArgs, null);
+ assertNotNull(c);
+ return c;
+ }
+
+ private void addBookmark(String url, String title) {
+ Uri uri = insertBookmark(url, title);
+ assertNotNull(uri);
+ assertFalse(android.provider.Browser.BOOKMARKS_URI.equals(uri));
+ mDeleteUris.add(uri);
+ }
+
+ private Uri insertBookmark(String url, String title) {
+ ContentValues values = new ContentValues();
+ values.put("title", title);
+ values.put("url", url);
+ values.put("visits", 0);
+ values.put("date", 0);
+ values.put("created", 0);
+ values.put("bookmark", 1);
+ return getContext().getContentResolver().insert(android.provider.Browser.BOOKMARKS_URI,
+ values);
+ }
+
+ private void deleteUri(Uri uri) {
+ int count = getContext().getContentResolver().delete(uri, null, null);
+ assertEquals("Failed to delete " + uri, 1, count);
+ }
+
+ private static String getCol(Cursor c, String name) {
+ int col = c.getColumnIndex(name);
+ String msg = "Column " + name + " not found, columns: "
+ + Arrays.toString(c.getColumnNames());
+ assertTrue(msg, col >= 0);
+ return c.getString(col);
+ }
+}