DatabaseResultLoaderTest.java revision b7b286cb893268bec38584acdf5696f68675eced
17fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze/* 27fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * Copyright (C) 2017 The Android Open Source Project 37fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * 47fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * Licensed under the Apache License, Version 2.0 (the "License"); 57fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * you may not use this file except in compliance with the License. 67fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * You may obtain a copy of the License at 77fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * 87fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * http://www.apache.org/licenses/LICENSE-2.0 97fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * 107fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * Unless required by applicable law or agreed to in writing, software 117fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * distributed under the License is distributed on an "AS IS" BASIS, 127fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * See the License for the specific language governing permissions and 147fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * limitations under the License. 157fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze * 167fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze */ 177fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 18b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritzepackage com.android.settings.search2; 197fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 207fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport android.content.ContentValues; 217fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport android.content.Context; 227fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport android.database.sqlite.SQLiteDatabase; 23a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhang 247fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport com.android.settings.SettingsRobolectricTestRunner; 257fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport com.android.settings.TestConfig; 26a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport com.android.settings.dashboard.SiteMapManager; 27b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritzeimport com.android.settings.search.IndexDatabaseHelper; 28a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhangimport com.android.settings.testutils.DatabaseTestUtils; 29a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport com.android.settings.testutils.FakeFeatureFactory; 30a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhang 317fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.After; 327fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.Before; 337fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.Test; 347fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.runner.RunWith; 35a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport org.mockito.Answers; 36a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport org.mockito.Mock; 37a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport org.mockito.MockitoAnnotations; 387fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.robolectric.RuntimeEnvironment; 397fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.robolectric.annotation.Config; 407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 41b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritzeimport java.util.List; 42b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze 437fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport static com.google.common.truth.Truth.assertThat; 44a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Matchers.anyString; 45a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Matchers.eq; 46a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.times; 47a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.verify; 48a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.when; 497fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 507fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze@RunWith(SettingsRobolectricTestRunner.class) 517fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) 527fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzepublic class DatabaseResultLoaderTest { 537fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 54a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang @Mock(answer = Answers.RETURNS_DEEP_STUBS) 55a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang private Context mMockContext; 56a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang @Mock 57a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang private SiteMapManager mSiteMapManager; 58a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang private Context mContext; 597fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze private DatabaseResultLoader loader; 607fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 617fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze SQLiteDatabase mDb; 627fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 637fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Before 647fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void setUp() { 65a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang MockitoAnnotations.initMocks(this); 667fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mContext = RuntimeEnvironment.application; 67a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang FakeFeatureFactory.setupForTest(mMockContext); 68a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang FakeFeatureFactory factory = 69a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang (FakeFeatureFactory) FakeFeatureFactory.getFactory(mMockContext); 70a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang when(factory.searchFeatureProvider.getSiteMapManager()) 71a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang .thenReturn(mSiteMapManager); 727fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mDb = IndexDatabaseHelper.getInstance(mContext).getWritableDatabase(); 737fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze setUpDb(); 747fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 757fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 767fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @After 777fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void cleanUp() { 78a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhang DatabaseTestUtils.clearDb(); 797fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 807fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 817fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 827fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testMatchTitle() { 8340ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "title", mSiteMapManager); 843f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(2); 853f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze verify(mSiteMapManager, times(2)).buildBreadCrumb(eq(mContext), anyString(), anyString()); 867fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 877fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 887fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 897fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testMatchSummary() { 9040ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "summary", mSiteMapManager); 913f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(2); 927fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 937fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 947fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 957fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testMatchKeywords() { 9640ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "keywords", mSiteMapManager); 973f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(2); 987fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 997fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1007fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 1017fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testMatchEntries() { 10240ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "entries", mSiteMapManager); 1033f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(2); 1047fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1057fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1067fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 1077fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testSpecialCaseWord_MatchesNonPrefix() { 1087fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("Data usage"); 10940ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "usage", mSiteMapManager); 1107fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1117fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1127fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1137fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 1147fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testSpecialCaseSpace_Matches() { 1157fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("space"); 11640ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, " space ", mSiteMapManager); 1177fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1187fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1197fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1207fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 1217fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testSpecialCaseDash_MatchesWordNoDash() { 1227fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("wi-fi calling"); 12340ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "wifi", mSiteMapManager); 1247fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1257fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1267fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1277fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 1287fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testSpecialCaseDash_MatchesWordWithDash() { 1297fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("priorités seulment"); 13040ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "priorités", mSiteMapManager); 1317fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1327fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1337fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1347fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 1357fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testSpecialCaseDash_MatchesWordWithoutDash() { 1367fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("priorités seulment"); 13740ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "priorites", mSiteMapManager); 1387fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1397fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1417fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 1427fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testSpecialCaseDash_MatchesEntireQueryWithoutDash() { 1437fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("wi-fi calling"); 14440ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "wifi calling", mSiteMapManager); 1457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1467fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1477fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 148314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 149314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze public void testSpecialCasePrefix_MatchesPrefixOfEntry() { 150314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Photos"); 15140ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "pho", mSiteMapManager); 152314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 153314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 154314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 155314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 156314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze public void testSpecialCasePrefix_DoesNotMatchNonPrefixSubstring() { 157314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Photos"); 15840ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "hot", mSiteMapManager); 159314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(0); 160314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 161314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 162314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 163314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze public void testSpecialCaseMultiWordPrefix_MatchesPrefixOfEntry() { 164314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps Notifications"); 16540ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "Apps", mSiteMapManager); 166314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 167314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 168314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 169314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 170314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze public void testSpecialCaseMultiWordPrefix_MatchesSecondWordPrefixOfEntry() { 171314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps Notifications"); 17240ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "Not", mSiteMapManager); 173314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 174314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 175314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 176314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 177314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze public void testSpecialCaseMultiWordPrefix_DoesNotMatchMatchesPrefixOfFirstEntry() { 178314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps Notifications"); 17940ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "pp", mSiteMapManager); 180314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(0); 181314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 182314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 183314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 184314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze public void testSpecialCaseMultiWordPrefix_DoesNotMatchMatchesPrefixOfSecondEntry() { 185314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps Notifications"); 18640ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "tion", mSiteMapManager); 187314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(0); 188314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 189314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 190314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 191314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze public void testSpecialCaseMultiWordPrefixWithSpecial_MatchesPrefixOfEntry() { 192314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps & Notifications"); 19340ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "App", mSiteMapManager); 194314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 195314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 196314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 197314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 198314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze public void testSpecialCaseMultiWordPrefixWithSpecial_MatchesPrefixOfSecondEntry() { 199314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps & Notifications"); 20040ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "No", mSiteMapManager); 201314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 202314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 203314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 204b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze @Test 205b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze public void testSpecialCaseTwoWords_FirstWordMatches_RanksHigher() { 206b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze final String caseOne = "Apple pear"; 207b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze final String caseTwo = "Banana apple"; 208b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze insertSpecialCase(caseOne); 209b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze insertSpecialCase(caseTwo); 210b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze loader = new DatabaseResultLoader(mContext, "App", null); 211b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze List<? extends SearchResult> results = loader.loadInBackground(); 212b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze 213b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze assertThat(results.get(0).title).isEqualTo(caseOne); 214b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze assertThat(results.get(1).title).isEqualTo(caseTwo); 215b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze assertThat(results.get(0).rank).isLessThan(results.get(1).rank); 216b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze } 217b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze 2187fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze private void insertSpecialCase(String specialCase) { 2197fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze String normalized = DatabaseIndexingUtils.normalizeHyphen(specialCase); 2207fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze normalized = DatabaseIndexingUtils.normalizeString(normalized); 2217fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 2227fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze ContentValues values = new ContentValues(); 223b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DOCID, normalized.hashCode()); 2247fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us"); 2257fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1); 2267fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, specialCase); 2277fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, normalized); 2287fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, ""); 2297fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, ""); 2307fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, ""); 2317fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, ""); 2327fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, ""); 2337fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, ""); 2347fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME, 2357fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze "com.android.settings.gestures.GestureSettings"); 2367fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves"); 2377fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, ""); 2387fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); 2397fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); 2407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); 2413f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true); 2427fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power"); 2437fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); 2447fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); 2457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, (String) null); 2467fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 2477fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values); 2487fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 2497fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 2507fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze private void setUpDb() { 2517fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze ContentValues values = new ContentValues(); 2527fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DOCID, 0); 2537fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us"); 2547fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1); 2557fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "alpha_title"); 2567fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "alpha title"); 2577fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "alpha_summary"); 258314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "alpha summary"); 2597fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "alpha_summary"); 260314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "alpha summary"); 261314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "alpha entries"); 262314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "alpha keywords"); 2637fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME, 2647fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze "com.android.settings.gestures.GestureSettings"); 2657fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves"); 2667fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, ""); 2677fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); 2687fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); 2697fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); 2703f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true); 2717fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power"); 2727fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); 2737fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); 2747fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, (String) null); 2757fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 2767fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values); 2777fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 2787fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values = new ContentValues(); 2797fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DOCID, 1); 2807fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us"); 2817fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1); 2827fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "bravo_title"); 2837fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "bravo title"); 2847fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "bravo_summary"); 285314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "bravo summary"); 2867fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "bravo_summary"); 287314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "bravo summary"); 288314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "bravo entries"); 289314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "bravo keywords"); 2907fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME, 2917fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze "com.android.settings.gestures.GestureSettings"); 2927fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves"); 2937fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, ""); 2947fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); 2957fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); 2967fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); 2973f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true); 2987fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power"); 2997fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); 3007fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); 3017fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, (String) null); 3027fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values); 3037fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 3047fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values = new ContentValues(); 3057fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DOCID, 2); 3067fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us"); 3077fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1); 3087fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "charlie_title"); 3097fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "charlie title"); 3107fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "charlie_summary"); 311314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "charlie summary"); 3127fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "charlie_summary"); 313314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "charlie summary"); 314314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "charlie entries"); 315314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "charlie keywords"); 3167fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME, 3177fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze "com.android.settings.gestures.GestureSettings"); 3187fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves"); 3197fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, ""); 3207fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); 3217fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); 3227fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); 3233f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ENABLED, false); 3247fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power"); 3257fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); 3267fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); 3277fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, (String) null); 3287fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 3297fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values); 3307fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 331b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze}