DatabaseResultLoaderTest.java revision 2078bc2358031ef3a191900d9036daf4251911c1
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 182078bc2358031ef3a191900d9036daf4251911c1Matthew Fritzepackage com.android.settings.search; 197fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 207fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport android.content.ContentValues; 217fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport android.content.Context; 2252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritzeimport android.content.Intent; 237fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport android.database.sqlite.SQLiteDatabase; 24a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhang 257fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport com.android.settings.SettingsRobolectricTestRunner; 267fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport com.android.settings.TestConfig; 27a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport com.android.settings.dashboard.SiteMapManager; 282078bc2358031ef3a191900d9036daf4251911c1Matthew Fritzeimport com.android.settings.search.DatabaseIndexingUtils; 292078bc2358031ef3a191900d9036daf4251911c1Matthew Fritzeimport com.android.settings.search.DatabaseResultLoader; 30b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritzeimport com.android.settings.search.IndexDatabaseHelper; 312078bc2358031ef3a191900d9036daf4251911c1Matthew Fritzeimport com.android.settings.search.InlineSwitchPayload; 322078bc2358031ef3a191900d9036daf4251911c1Matthew Fritzeimport com.android.settings.search.ResultPayload; 332078bc2358031ef3a191900d9036daf4251911c1Matthew Fritzeimport com.android.settings.search.ResultPayloadUtils; 342078bc2358031ef3a191900d9036daf4251911c1Matthew Fritzeimport com.android.settings.search.SearchResult; 35a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhangimport com.android.settings.testutils.DatabaseTestUtils; 36a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport com.android.settings.testutils.FakeFeatureFactory; 37a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhang 387fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.After; 397fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.Before; 407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.Test; 417fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.junit.runner.RunWith; 42a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport org.mockito.Answers; 43a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport org.mockito.Mock; 44a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport org.mockito.MockitoAnnotations; 457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.robolectric.RuntimeEnvironment; 467fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport org.robolectric.annotation.Config; 477fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 4852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritzeimport java.util.ArrayList; 49b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritzeimport java.util.List; 50b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze 517fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzeimport static com.google.common.truth.Truth.assertThat; 52a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Matchers.anyString; 53a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Matchers.eq; 54a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.times; 55a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.verify; 56a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhangimport static org.mockito.Mockito.when; 577fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 587fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze@RunWith(SettingsRobolectricTestRunner.class) 597fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) 607fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritzepublic class DatabaseResultLoaderTest { 617fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 62a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang @Mock(answer = Answers.RETURNS_DEEP_STUBS) 63a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang private Context mMockContext; 64a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang @Mock 65a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang private SiteMapManager mSiteMapManager; 66a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang private Context mContext; 677fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze private DatabaseResultLoader loader; 683746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze private ResultPayload mResultPayload; 697fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 7052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze private final String titleOne = "titleOne"; 7152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze private final String titleTwo = "titleTwo"; 7252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze private final String titleThree = "titleThree"; 7352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze private final String titleFour = "titleFour"; 7452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze private final String summaryOne = "summaryOne"; 7552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze private final String summaryTwo = "summaryTwo"; 7652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze private final String summaryThree = "summaryThree"; 7752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 787fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze SQLiteDatabase mDb; 797fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 807fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Before 817fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void setUp() { 82a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang MockitoAnnotations.initMocks(this); 837fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mContext = RuntimeEnvironment.application; 843746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze mResultPayload = new ResultPayload(new Intent()); 85a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang FakeFeatureFactory.setupForTest(mMockContext); 86a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang FakeFeatureFactory factory = 87a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang (FakeFeatureFactory) FakeFeatureFactory.getFactory(mMockContext); 88a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang when(factory.searchFeatureProvider.getSiteMapManager()) 89a96b11f65d9f29dd4037da85e12f5cf9dcfa0176Fan Zhang .thenReturn(mSiteMapManager); 907fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mDb = IndexDatabaseHelper.getInstance(mContext).getWritableDatabase(); 917fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze setUpDb(); 927fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 937fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 947fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @After 957fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void cleanUp() { 96a8b089db8a6d495a18dc3ad91d3bd84b042fb004Fan Zhang DatabaseTestUtils.clearDb(); 977fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 987fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 997fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 1007fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testMatchTitle() { 10140ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "title", mSiteMapManager); 1023f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(2); 1033f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze verify(mSiteMapManager, times(2)).buildBreadCrumb(eq(mContext), anyString(), anyString()); 1047fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1057fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1067fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 1077fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testMatchSummary() { 10840ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "summary", mSiteMapManager); 1093f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(2); 1107fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1117fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1127fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 1137fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testMatchKeywords() { 11440ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "keywords", mSiteMapManager); 1153f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(2); 1167fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1177fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1187fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 1197fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze public void testMatchEntries() { 12040ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "entries", mSiteMapManager); 1213f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(2); 1227fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1237fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1247fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 12552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseWord_matchesNonPrefix() { 1267fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("Data usage"); 12740ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "usage", mSiteMapManager); 1287fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1297fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1307fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1317fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 13252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseSpace_matches() { 1337fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("space"); 13440ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, " space ", mSiteMapManager); 1357fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1367fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1377fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1387fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 13952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseDash_matchesWordNoDash() { 1407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("wi-fi calling"); 14140ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "wifi", mSiteMapManager); 1427fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1437fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1447fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 14652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseDash_matchesWordWithDash() { 1477fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("priorités seulment"); 14840ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "priorités", mSiteMapManager); 1497fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1507fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1517fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1527fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 15352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseDash_matchesWordWithoutDash() { 1547fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("priorités seulment"); 15540ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "priorites", mSiteMapManager); 1567fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1577fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1587fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 1597fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze @Test 16052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseDash_matchesEntireQueryWithoutDash() { 1617fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze insertSpecialCase("wi-fi calling"); 16240ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "wifi calling", mSiteMapManager); 1637fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 1647fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 1657fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 166314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 16752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCasePrefix_matchesPrefixOfEntry() { 168314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Photos"); 16940ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "pho", mSiteMapManager); 170314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 171314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 172314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 173314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 174314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze public void testSpecialCasePrefix_DoesNotMatchNonPrefixSubstring() { 175314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Photos"); 17640ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "hot", mSiteMapManager); 177314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(0); 178314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 179314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 180314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 18152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseMultiWordPrefix_matchesPrefixOfEntry() { 182314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps Notifications"); 18340ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "Apps", mSiteMapManager); 184314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 185314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 186314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 187314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 18852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseMultiWordPrefix_matchesSecondWordPrefixOfEntry() { 189314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps Notifications"); 19040ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "Not", mSiteMapManager); 191314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 192314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 193314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 194314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 195314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze public void testSpecialCaseMultiWordPrefix_DoesNotMatchMatchesPrefixOfFirstEntry() { 196314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps Notifications"); 19740ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "pp", mSiteMapManager); 198314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(0); 199314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 200314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 201314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 202314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze public void testSpecialCaseMultiWordPrefix_DoesNotMatchMatchesPrefixOfSecondEntry() { 203314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps Notifications"); 20440ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "tion", mSiteMapManager); 205314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(0); 206314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 207314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 208314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 20952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseMultiWordPrefixWithSpecial_matchesPrefixOfEntry() { 210314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps & Notifications"); 21140ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "App", mSiteMapManager); 212314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 213314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 214314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 215314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze @Test 21652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseMultiWordPrefixWithSpecial_matchesPrefixOfSecondEntry() { 217314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze insertSpecialCase("Apps & Notifications"); 21840ce0fab758714c973945ec8f053c52076d5fc50Matthew Fritze loader = new DatabaseResultLoader(mContext, "No", mSiteMapManager); 219314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze assertThat(loader.loadInBackground().size()).isEqualTo(1); 220314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze } 221314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze 222b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze @Test 22352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testDeDupe_noDuplicates_originalListReturn() { 22452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze // Three elements with unique titles and summaries 22552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze List<SearchResult> results = new ArrayList(); 22652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 22752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult.Builder builder = new SearchResult.Builder(); 22852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze builder.addTitle(titleOne) 22952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addSummary(summaryOne) 2303746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze .addPayload(mResultPayload); 23152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult resultOne = builder.build(); 23252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze results.add(resultOne); 23352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 23452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze builder.addTitle(titleTwo) 23552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addSummary(summaryTwo); 23652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult resultTwo = builder.build(); 23752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze results.add(resultTwo); 23852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 23952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze builder.addTitle(titleThree) 24052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addSummary(summaryThree); 24152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult resultThree = builder.build(); 24252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze results.add(resultThree); 24352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 24452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze loader = new DatabaseResultLoader(mContext, "", null); 24552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze loader.removeDuplicates(results); 24652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze assertThat(results.size()).isEqualTo(3); 24752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze assertThat(results.get(0)).isEqualTo(resultOne); 24852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze assertThat(results.get(1)).isEqualTo(resultTwo); 24952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze assertThat(results.get(2)).isEqualTo(resultThree); 25052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze } 25152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 25252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze @Test 25352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testDeDupe_oneDuplicate_duplicateRemoved() { 25452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze List<SearchResult> results = new ArrayList(); 25552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 25652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult.Builder builder = new SearchResult.Builder(); 25752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze builder.addTitle(titleOne) 25852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addSummary(summaryOne) 25952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addRank(0) 2603746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze .addPayload(mResultPayload); 26152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult resultOne = builder.build(); 26252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze results.add(resultOne); 26352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 26452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze // Duplicate of the first element 26552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze builder.addTitle(titleOne) 26652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addSummary(summaryOne) 26752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addRank(1); 26852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult resultTwo = builder.build(); 26952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze results.add(resultTwo); 27052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 27152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze // Unique 27252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze builder.addTitle(titleThree) 27352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addSummary(summaryThree); 27452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult resultThree = builder.build(); 27552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze results.add(resultThree); 27652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 27752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze loader = new DatabaseResultLoader(mContext, "", null); 27852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze loader.removeDuplicates(results); 27952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze assertThat(results.size()).isEqualTo(2); 28052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze assertThat(results.get(0)).isEqualTo(resultOne); 28152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze assertThat(results.get(1)).isEqualTo(resultThree); 28252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze } 28352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 28452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze @Test 28552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testDeDupe_firstDupeInline_secondDuplicateRemoved() { 28652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze List<SearchResult> results = new ArrayList(); 2873746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze InlineSwitchPayload inlinePayload = new InlineSwitchPayload("", 0, null, null); 28852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 28952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult.Builder builder = new SearchResult.Builder(); 29052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze // Inline result 29152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze builder.addTitle(titleOne) 29252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addSummary(summaryOne) 29352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addRank(0) 29452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addPayload(inlinePayload); 29552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult resultOne = builder.build(); 29652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze results.add(resultOne); 29752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 29852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze // Duplicate of first result, but Intent Result. Should be removed. 29952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze builder.addTitle(titleOne) 30052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addSummary(summaryOne) 30152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addRank(1) 3023746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze .addPayload(mResultPayload); 30352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult resultTwo = builder.build(); 30452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze results.add(resultTwo); 30552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 30652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze // Unique 30752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze builder.addTitle(titleThree) 30852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addSummary(summaryThree); 30952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult resultThree = builder.build(); 31052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze results.add(resultThree); 31152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 31252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze loader = new DatabaseResultLoader(mContext, "", null); 31352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze loader.removeDuplicates(results); 31452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze assertThat(results.size()).isEqualTo(2); 31552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze assertThat(results.get(0)).isEqualTo(resultOne); 31652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze assertThat(results.get(1)).isEqualTo(resultThree); 31752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze } 31852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 31952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze @Test 32052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testDeDupe_secondDupeInline_firstDuplicateRemoved() { 32152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze /* 32252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze * Create a list as follows: 32352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze * (5) Intent Four 32452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze * (4) Inline Two 32552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze * (3) Intent Three 32652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze * (2) Intent Two 32752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze * (1) Intent One 32852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze * 32952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze * After removing duplicates: 33052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze * (4) Intent Four 33152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze * (3) Inline Two 33252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze * (2) Intent Three 33352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze * (1) Intent One 33452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze */ 33552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze List<SearchResult> results = new ArrayList(); 3363746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze InlineSwitchPayload inlinePayload = new InlineSwitchPayload("", 0, null, null); 33752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 33852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult.Builder builder = new SearchResult.Builder(); 33952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze // Intent One 34052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze builder.addTitle(titleOne) 34152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addSummary(summaryOne) 3423746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze .addPayload(mResultPayload); 34352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult resultOne = builder.build(); 34452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze results.add(resultOne); 34552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 34652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze // Intent Two 34752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze builder.addTitle(titleTwo) 34852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addSummary(summaryTwo) 3493746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze .addPayload(mResultPayload); 35052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult resultTwo = builder.build(); 35152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze results.add(resultTwo); 35252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 35352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze // Intent Three 35452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze builder.addTitle(titleThree) 35552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addSummary(summaryThree); 35652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult resultThree = builder.build(); 35752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze results.add(resultThree); 35852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 35952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze // Inline Two 36052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze builder.addTitle(titleTwo) 36152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addSummary(summaryTwo) 36252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addPayload(inlinePayload); 36352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult resultFour = builder.build(); 36452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze results.add(resultFour); 36552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 36652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze // Intent Four 36752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze builder.addTitle(titleFour) 36852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze .addSummary(summaryOne) 3693746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze .addPayload(mResultPayload); 37052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze SearchResult resultFive = builder.build(); 37152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze results.add(resultFive); 37252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 37352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze loader = new DatabaseResultLoader(mContext, "", null); 37452b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze loader.removeDuplicates(results); 37552b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze assertThat(results.size()).isEqualTo(4); 37652b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze assertThat(results.get(0)).isEqualTo(resultOne); 37752b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze assertThat(results.get(1)).isEqualTo(resultThree); 37852b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze assertThat(results.get(2)).isEqualTo(resultFour); 37952b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze assertThat(results.get(3)).isEqualTo(resultFive); 38052b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze } 38152b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze 38252b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze @Test 38352b6f8887bb67b43066739c244e89e54caf2718bMatthew Fritze public void testSpecialCaseTwoWords_firstWordMatches_ranksHigher() { 384b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze final String caseOne = "Apple pear"; 385b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze final String caseTwo = "Banana apple"; 386b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze insertSpecialCase(caseOne); 387b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze insertSpecialCase(caseTwo); 388b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze loader = new DatabaseResultLoader(mContext, "App", null); 389b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze List<? extends SearchResult> results = loader.loadInBackground(); 390b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze 391b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze assertThat(results.get(0).title).isEqualTo(caseOne); 392b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze assertThat(results.get(1).title).isEqualTo(caseTwo); 393b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze assertThat(results.get(0).rank).isLessThan(results.get(1).rank); 394b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze } 395b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze 3967fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze private void insertSpecialCase(String specialCase) { 3977fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze String normalized = DatabaseIndexingUtils.normalizeHyphen(specialCase); 3987fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze normalized = DatabaseIndexingUtils.normalizeString(normalized); 3993746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze final ResultPayload payload = new ResultPayload(new Intent()); 4007fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 4017fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze ContentValues values = new ContentValues(); 402b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DOCID, normalized.hashCode()); 4037fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us"); 4047fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1); 4057fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, specialCase); 4067fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, normalized); 4077fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, ""); 4087fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, ""); 4097fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, ""); 4107fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, ""); 4117fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, ""); 4127fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, ""); 4137fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME, 4147fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze "com.android.settings.gestures.GestureSettings"); 4157fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves"); 4167fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, ""); 4177fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); 4187fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); 4197fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); 4203f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true); 4217fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power"); 4227fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); 4237fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); 4243746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, ResultPayloadUtils.marshall(payload)); 4257fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 4267fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values); 4277fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 4287fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 4297fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze private void setUpDb() { 4303746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze final byte[] payload = ResultPayloadUtils.marshall(new ResultPayload(new Intent())); 4313746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze 4327fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze ContentValues values = new ContentValues(); 4337fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DOCID, 0); 4347fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us"); 4357fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1); 4367fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "alpha_title"); 4377fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "alpha title"); 4387fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "alpha_summary"); 439314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "alpha summary"); 4407fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "alpha_summary"); 441314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "alpha summary"); 442314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "alpha entries"); 443314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "alpha keywords"); 4447fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME, 4457fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze "com.android.settings.gestures.GestureSettings"); 4467fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves"); 4477fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, ""); 4487fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); 4497fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); 4507fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); 4513f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true); 4527fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power"); 4537fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); 4547fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); 4553746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, payload); 4567fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 4577fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values); 4587fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 4597fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values = new ContentValues(); 4607fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DOCID, 1); 4617fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us"); 4627fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1); 4637fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "bravo_title"); 4647fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "bravo title"); 4657fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "bravo_summary"); 466314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "bravo summary"); 4677fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "bravo_summary"); 468314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "bravo summary"); 469314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "bravo entries"); 470314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "bravo keywords"); 4717fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME, 4727fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze "com.android.settings.gestures.GestureSettings"); 4737fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves"); 4747fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, ""); 4757fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); 4767fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); 4777fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); 4783f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ENABLED, true); 4797fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power"); 4807fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); 4817fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); 4823746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, payload); 4837fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values); 4847fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 4857fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values = new ContentValues(); 4867fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DOCID, 2); 4877fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.LOCALE, "en-us"); 4887fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_RANK, 1); 4897fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE, "charlie_title"); 4907fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_TITLE_NORMALIZED, "charlie title"); 4917fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON, "charlie_summary"); 492314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_ON_NORMALIZED, "charlie summary"); 4937fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF, "charlie_summary"); 494314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_SUMMARY_OFF_NORMALIZED, "charlie summary"); 495314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_ENTRIES, "charlie entries"); 496314b09eb4b6bff2626604155e4273956aeaa24b5Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEYWORDS, "charlie keywords"); 4977fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.CLASS_NAME, 4987fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze "com.android.settings.gestures.GestureSettings"); 4997fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.SCREEN_TITLE, "Moves"); 5007fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_ACTION, ""); 5017fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_PACKAGE, ""); 5027fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.INTENT_TARGET_CLASS, ""); 5037fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ICON, ""); 5043f3b547e4a2eeeb362d9b7c98b05f9a244cd754eMatthew Fritze values.put(IndexDatabaseHelper.IndexColumns.ENABLED, false); 5057fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.DATA_KEY_REF, "gesture_double_tap_power"); 5067fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.USER_ID, 0); 5077fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD_TYPE, 0); 5083746d9e25f2805b16b69eb7420a629fc66f6a788Matthew Fritze values.put(IndexDatabaseHelper.IndexColumns.PAYLOAD, payload); 5097fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze 5107fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze mDb.replaceOrThrow(IndexDatabaseHelper.Tables.TABLE_PREFS_INDEX, null, values); 5117fda314980107337d2eb9237ed00e997ae4ee345Matthew Fritze } 512b7b286cb893268bec38584acdf5696f68675ecedMatthew Fritze}