diff options
author | Hyunyoung Song <hyunyoungs@google.com> | 2017-06-26 18:10:14 -0700 |
---|---|---|
committer | Hyunyoung Song <hyunyoungs@google.com> | 2017-06-26 18:11:07 -0700 |
commit | 6e880ec71607efc3ce2faa3a58992be5209c6db4 (patch) | |
tree | c1375bd61e2095a5e9e1109909327c0e6ae1b1ac /tests | |
parent | cd6eaa88e3790eb2647cc6458fe8826f031a0709 (diff) | |
parent | 71d94efcfb3d651ab2547b4feb51741a0d6f021b (diff) | |
download | android_packages_apps_Trebuchet-6e880ec71607efc3ce2faa3a58992be5209c6db4.tar.gz android_packages_apps_Trebuchet-6e880ec71607efc3ce2faa3a58992be5209c6db4.tar.bz2 android_packages_apps_Trebuchet-6e880ec71607efc3ce2faa3a58992be5209c6db4.zip |
merged ub-launcher3-dorval-polish, and resolved conflicts
Test: $ make -j 32 dist checkbuild
Bug: 30770233
Bug: 62896294
Change-Id: I032e6a6775bad0b3995750a43ff7ed6482cc2d5d
Diffstat (limited to 'tests')
-rw-r--r-- | tests/res/raw/db_schema_v10.json | 4 | ||||
-rw-r--r-- | tests/src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithmTest.java (renamed from tests/src/com/android/launcher3/allapps/DefaultAppSearchAlgorithmTest.java) | 2 | ||||
-rw-r--r-- | tests/src/com/android/launcher3/model/AddWorkspaceItemsTaskTest.java | 11 | ||||
-rw-r--r-- | tests/src/com/android/launcher3/model/BaseModelUpdateTaskTestCase.java | 29 | ||||
-rw-r--r-- | tests/src/com/android/launcher3/model/DbDowngradeHelperTest.java | 194 | ||||
-rw-r--r-- | tests/src/com/android/launcher3/model/GridSizeMigrationTaskTest.java | 5 | ||||
-rw-r--r-- | tests/src/com/android/launcher3/model/PackageInstallStateChangedTaskTest.java | 5 | ||||
-rw-r--r-- | tests/src/com/android/launcher3/popup/PopupPopulatorTest.java | 18 | ||||
-rw-r--r-- | tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java | 5 | ||||
-rw-r--r-- | tests/src/com/android/launcher3/util/TestLauncherProvider.java | 4 |
10 files changed, 238 insertions, 39 deletions
diff --git a/tests/res/raw/db_schema_v10.json b/tests/res/raw/db_schema_v10.json new file mode 100644 index 000000000..a5e290ef7 --- /dev/null +++ b/tests/res/raw/db_schema_v10.json @@ -0,0 +1,4 @@ +{ + "version" : 10, + "downgrade_to_9" : [] +}
\ No newline at end of file diff --git a/tests/src/com/android/launcher3/allapps/DefaultAppSearchAlgorithmTest.java b/tests/src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithmTest.java index 18570de5b..20b23b070 100644 --- a/tests/src/com/android/launcher3/allapps/DefaultAppSearchAlgorithmTest.java +++ b/tests/src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithmTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.launcher3.allapps; +package com.android.launcher3.allapps.search; import android.content.ComponentName; import android.test.InstrumentationTestCase; diff --git a/tests/src/com/android/launcher3/model/AddWorkspaceItemsTaskTest.java b/tests/src/com/android/launcher3/model/AddWorkspaceItemsTaskTest.java index d0ba9074c..4c80902f0 100644 --- a/tests/src/com/android/launcher3/model/AddWorkspaceItemsTaskTest.java +++ b/tests/src/com/android/launcher3/model/AddWorkspaceItemsTaskTest.java @@ -10,9 +10,9 @@ import android.net.Uri; import android.util.Pair; import com.android.launcher3.ItemInfo; +import com.android.launcher3.LauncherProvider; import com.android.launcher3.LauncherSettings; import com.android.launcher3.ShortcutInfo; -import com.android.launcher3.config.ProviderConfig; import com.android.launcher3.util.GridOccupancy; import com.android.launcher3.util.LongArrayMap; import com.android.launcher3.util.Provider; @@ -21,6 +21,7 @@ import org.mockito.ArgumentCaptor; import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import static org.mockito.Mockito.any; import static org.mockito.Mockito.verify; @@ -50,7 +51,11 @@ public class AddWorkspaceItemsTaskTest extends BaseModelUpdateTaskTestCase { } private AddWorkspaceItemsTask newTask(ItemInfo... items) { - return new AddWorkspaceItemsTask(Provider.of(Arrays.asList(items))) { + List<Pair<ItemInfo, Object>> list = new ArrayList<>(); + for (ItemInfo item : items) { + list.add(Pair.create(item, null)); + } + return new AddWorkspaceItemsTask(Provider.of(list)) { @Override protected void updateScreens(Context context, ArrayList<Long> workspaceScreens) { } @@ -178,6 +183,6 @@ public class AddWorkspaceItemsTaskTest extends BaseModelUpdateTaskTestCase { v.put(LauncherSettings.WorkspaceScreens.SCREEN_RANK, i); ops.add(ContentProviderOperation.newInsert(uri).withValues(v).build()); } - getMockContentResolver().applyBatch(ProviderConfig.AUTHORITY, ops); + getMockContentResolver().applyBatch(LauncherProvider.AUTHORITY, ops); } } diff --git a/tests/src/com/android/launcher3/model/BaseModelUpdateTaskTestCase.java b/tests/src/com/android/launcher3/model/BaseModelUpdateTaskTestCase.java index b9944db98..3d03507ea 100644 --- a/tests/src/com/android/launcher3/model/BaseModelUpdateTaskTestCase.java +++ b/tests/src/com/android/launcher3/model/BaseModelUpdateTaskTestCase.java @@ -16,15 +16,14 @@ import android.test.ProviderTestCase2; import com.android.launcher3.AllAppsList; import com.android.launcher3.AppFilter; import com.android.launcher3.AppInfo; -import com.android.launcher3.DeferredHandler; import com.android.launcher3.IconCache; import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.ItemInfo; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherModel; -import com.android.launcher3.LauncherModel.BaseModelUpdateTask; +import com.android.launcher3.LauncherModel.ModelUpdateTask; import com.android.launcher3.LauncherModel.Callbacks; -import com.android.launcher3.config.ProviderConfig; +import com.android.launcher3.LauncherProvider; import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.Provider; import com.android.launcher3.util.TestLauncherProvider; @@ -36,6 +35,7 @@ import java.io.InputStreamReader; import java.lang.reflect.Field; import java.util.HashMap; import java.util.List; +import java.util.concurrent.Executor; import static org.mockito.Matchers.anyBoolean; import static org.mockito.Mockito.atLeast; @@ -64,7 +64,7 @@ public class BaseModelUpdateTaskTestCase extends ProviderTestCase2<TestLauncherP public Callbacks callbacks; public BaseModelUpdateTaskTestCase() { - super(TestLauncherProvider.class, ProviderConfig.AUTHORITY); + super(TestLauncherProvider.class, LauncherProvider.AUTHORITY); } @Override @@ -75,8 +75,10 @@ public class BaseModelUpdateTaskTestCase extends ProviderTestCase2<TestLauncherP appState = mock(LauncherAppState.class); model = mock(LauncherModel.class); modelWriter = mock(ModelWriter.class); + when(appState.getModel()).thenReturn(model); when(model.getWriter(anyBoolean())).thenReturn(modelWriter); + when(model.getCallback()).thenReturn(callbacks); myUser = Process.myUserHandle(); @@ -94,22 +96,15 @@ public class BaseModelUpdateTaskTestCase extends ProviderTestCase2<TestLauncherP /** * Synchronously executes the task and returns all the UI callbacks posted. */ - public List<Runnable> executeTaskForTest(BaseModelUpdateTask task) throws Exception { - LauncherModel mockModel = mock(LauncherModel.class); - when(mockModel.getCallback()).thenReturn(callbacks); - - Field f = BaseModelUpdateTask.class.getDeclaredField("mModel"); - f.setAccessible(true); - f.set(task, mockModel); + public List<Runnable> executeTaskForTest(ModelUpdateTask task) throws Exception { + when(model.isModelLoaded()).thenReturn(true); - DeferredHandler mockHandler = mock(DeferredHandler.class); - f = BaseModelUpdateTask.class.getDeclaredField("mUiHandler"); - f.setAccessible(true); - f.set(task, mockHandler); + Executor mockExecutor = mock(Executor.class); - task.execute(appState, bgDataModel, allAppsList); + task.init(appState, model, bgDataModel, allAppsList, mockExecutor); + task.run(); ArgumentCaptor<Runnable> captor = ArgumentCaptor.forClass(Runnable.class); - verify(mockHandler, atLeast(0)).post(captor.capture()); + verify(mockExecutor, atLeast(0)).execute(captor.capture()); return captor.getAllValues(); } diff --git a/tests/src/com/android/launcher3/model/DbDowngradeHelperTest.java b/tests/src/com/android/launcher3/model/DbDowngradeHelperTest.java new file mode 100644 index 000000000..1d9148ba1 --- /dev/null +++ b/tests/src/com/android/launcher3/model/DbDowngradeHelperTest.java @@ -0,0 +1,194 @@ +/* + * Copyright (C) 2017 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.launcher3.model; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertNotSame; +import static junit.framework.Assert.assertTrue; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.support.test.InstrumentationRegistry; +import android.support.test.filters.SmallTest; +import android.support.test.runner.AndroidJUnit4; + +import com.android.launcher3.LauncherProvider; +import com.android.launcher3.LauncherProvider.DatabaseHelper; +import com.android.launcher3.LauncherSettings.Favorites; +import com.android.launcher3.R; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.File; + +/** + * Tests for {@link DbDowngradeHelper} + */ +@SmallTest +@RunWith(AndroidJUnit4.class) +public class DbDowngradeHelperTest { + + private static final String SCHEMA_FILE = "test_schema.json"; + private static final String DB_FILE = "test.db"; + + private Context mContext; + private File mSchemaFile; + private File mDbFile; + + @Before + public void setup() { + mContext = InstrumentationRegistry.getTargetContext(); + mSchemaFile = mContext.getFileStreamPath(SCHEMA_FILE); + mDbFile = mContext.getDatabasePath(DB_FILE); + } + + @Test + public void testUpdateSchemaFile() throws Exception { + Context myContext = InstrumentationRegistry.getContext(); + int testResId = myContext.getResources().getIdentifier( + "db_schema_v10", "raw", myContext.getPackageName()); + mSchemaFile.delete(); + assertFalse(mSchemaFile.exists()); + + DbDowngradeHelper.updateSchemaFile(mSchemaFile, 10, myContext, testResId); + assertTrue(mSchemaFile.exists()); + assertEquals(10, DbDowngradeHelper.parse(mSchemaFile).version); + + // Schema is updated on version upgrade + assertTrue(mSchemaFile.setLastModified(0)); + DbDowngradeHelper.updateSchemaFile(mSchemaFile, 11, myContext, testResId); + assertNotSame(0, mSchemaFile.lastModified()); + + // Schema is not updated when version is same + assertTrue(mSchemaFile.setLastModified(0)); + DbDowngradeHelper.updateSchemaFile(mSchemaFile, 10, myContext, testResId); + assertEquals(0, mSchemaFile.lastModified()); + + // Schema is not updated on version downgrade + DbDowngradeHelper.updateSchemaFile(mSchemaFile, 3, myContext, testResId); + assertEquals(0, mSchemaFile.lastModified()); + } + + @Test + public void testDowngrade_success_v24() throws Exception { + setupTestDb(); + + TestOpenHelper helper = new TestOpenHelper(24); + assertEquals(24, helper.getReadableDatabase().getVersion()); + helper.close(); + } + + @Test + public void testDowngrade_success_v22() throws Exception { + setupTestDb(); + + SQLiteOpenHelper helper = new TestOpenHelper(22); + assertEquals(22, helper.getWritableDatabase().getVersion()); + + // Check column does not exist + try (Cursor c = helper.getWritableDatabase().query(Favorites.TABLE_NAME, + null, null, null, null, null, null)) { + assertEquals(-1, c.getColumnIndex(Favorites.OPTIONS)); + + // Check data is present + assertEquals(10, c.getCount()); + } + helper.close(); + + helper = new DatabaseHelper(mContext, null, DB_FILE) { + @Override + public void onOpen(SQLiteDatabase db) { } + }; + assertEquals(LauncherProvider.SCHEMA_VERSION, helper.getWritableDatabase().getVersion()); + + try (Cursor c = helper.getWritableDatabase().query(Favorites.TABLE_NAME, + null, null, null, null, null, null)) { + // Check column exists + assertNotSame(-1, c.getColumnIndex(Favorites.OPTIONS)); + + // Check data is present + assertEquals(10, c.getCount()); + } + helper.close(); + } + + @Test(expected = DowngradeFailException.class) + public void testDowngrade_fail_v20() throws Exception { + setupTestDb(); + + TestOpenHelper helper = new TestOpenHelper(20); + helper.getReadableDatabase().getVersion(); + } + + private void setupTestDb() throws Exception { + mSchemaFile.delete(); + mDbFile.delete(); + + DbDowngradeHelper.updateSchemaFile(mSchemaFile, LauncherProvider.SCHEMA_VERSION, mContext, + R.raw.downgrade_schema); + + DatabaseHelper dbHelper = new DatabaseHelper(mContext, null, DB_FILE) { + @Override + public void onOpen(SQLiteDatabase db) { } + }; + // Insert dummy data + for (int i = 0; i < 10; i++) { + ContentValues values = new ContentValues(); + values.put(Favorites._ID, i); + values.put(Favorites.TITLE, "title " + i); + dbHelper.getWritableDatabase().insert(Favorites.TABLE_NAME, null, values); + } + dbHelper.close(); + } + + private class TestOpenHelper extends SQLiteOpenHelper { + + public TestOpenHelper(int version) { + super(mContext, DB_FILE, null, version); + } + + @Override + public void onCreate(SQLiteDatabase sqLiteDatabase) { + throw new RuntimeException("DB should already be created"); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + throw new RuntimeException("Only downgrade supported"); + } + + @Override + public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { + try { + DbDowngradeHelper.parse(mSchemaFile).onDowngrade(db, oldVersion, newVersion); + } catch (Exception e) { + throw new DowngradeFailException(e); + } + } + } + + private static class DowngradeFailException extends RuntimeException { + public DowngradeFailException(Exception e) { + super(e); + } + } +} diff --git a/tests/src/com/android/launcher3/model/GridSizeMigrationTaskTest.java b/tests/src/com/android/launcher3/model/GridSizeMigrationTaskTest.java index fc7fe48fd..fd62d3644 100644 --- a/tests/src/com/android/launcher3/model/GridSizeMigrationTaskTest.java +++ b/tests/src/com/android/launcher3/model/GridSizeMigrationTaskTest.java @@ -1,7 +1,6 @@ package com.android.launcher3.model; import android.content.ContentValues; -import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.graphics.Point; @@ -10,9 +9,9 @@ import android.test.suitebuilder.annotation.MediumTest; import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.LauncherModel; +import com.android.launcher3.LauncherProvider; import com.android.launcher3.LauncherSettings; import com.android.launcher3.config.FeatureFlags; -import com.android.launcher3.config.ProviderConfig; import com.android.launcher3.model.GridSizeMigrationTask.MultiStepMigrationTask; import com.android.launcher3.util.TestLauncherProvider; @@ -40,7 +39,7 @@ public class GridSizeMigrationTaskTest extends ProviderTestCase2<TestLauncherPro private InvariantDeviceProfile mIdp; public GridSizeMigrationTaskTest() { - super(TestLauncherProvider.class, ProviderConfig.AUTHORITY); + super(TestLauncherProvider.class, LauncherProvider.AUTHORITY); } @Override diff --git a/tests/src/com/android/launcher3/model/PackageInstallStateChangedTaskTest.java b/tests/src/com/android/launcher3/model/PackageInstallStateChangedTaskTest.java index d6555620c..ed893c42e 100644 --- a/tests/src/com/android/launcher3/model/PackageInstallStateChangedTaskTest.java +++ b/tests/src/com/android/launcher3/model/PackageInstallStateChangedTaskTest.java @@ -21,9 +21,8 @@ public class PackageInstallStateChangedTaskTest extends BaseModelUpdateTaskTestC } private PackageInstallStateChangedTask newTask(String pkg, int progress) { - PackageInstallInfo installInfo = new PackageInstallInfo(pkg); - installInfo.progress = progress; - installInfo.state = PackageInstallerCompat.STATUS_INSTALLING; + int state = PackageInstallerCompat.STATUS_INSTALLING; + PackageInstallInfo installInfo = new PackageInstallInfo(pkg, state, progress); return new PackageInstallStateChangedTask(installInfo); } diff --git a/tests/src/com/android/launcher3/popup/PopupPopulatorTest.java b/tests/src/com/android/launcher3/popup/PopupPopulatorTest.java index 2ad9b35ae..9a89b1b2f 100644 --- a/tests/src/com/android/launcher3/popup/PopupPopulatorTest.java +++ b/tests/src/com/android/launcher3/popup/PopupPopulatorTest.java @@ -28,7 +28,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import static com.android.launcher3.popup.PopupPopulator.MAX_ITEMS; +import static com.android.launcher3.popup.PopupPopulator.MAX_SHORTCUTS; import static com.android.launcher3.popup.PopupPopulator.NUM_DYNAMIC; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -44,18 +44,18 @@ public class PopupPopulatorTest { public void testSortAndFilterShortcuts() { filterShortcutsAndAssertNumStaticAndDynamic(createShortcutsList(3, 0), 3, 0); filterShortcutsAndAssertNumStaticAndDynamic(createShortcutsList(0, 3), 0, 3); - filterShortcutsAndAssertNumStaticAndDynamic(createShortcutsList(5, 0), MAX_ITEMS, 0); - filterShortcutsAndAssertNumStaticAndDynamic(createShortcutsList(0, 5), 0, MAX_ITEMS); + filterShortcutsAndAssertNumStaticAndDynamic(createShortcutsList(5, 0), MAX_SHORTCUTS, 0); + filterShortcutsAndAssertNumStaticAndDynamic(createShortcutsList(0, 5), 0, MAX_SHORTCUTS); filterShortcutsAndAssertNumStaticAndDynamic(createShortcutsList(3, 3), - MAX_ITEMS - NUM_DYNAMIC, NUM_DYNAMIC); + MAX_SHORTCUTS - NUM_DYNAMIC, NUM_DYNAMIC); filterShortcutsAndAssertNumStaticAndDynamic(createShortcutsList(5, 5), - MAX_ITEMS - NUM_DYNAMIC, NUM_DYNAMIC); - filterShortcutsAndAssertNumStaticAndDynamic(createShortcutsList(5, 1), MAX_ITEMS - 1, 1); - filterShortcutsAndAssertNumStaticAndDynamic(createShortcutsList(1, 5), 1, MAX_ITEMS - 1); + MAX_SHORTCUTS - NUM_DYNAMIC, NUM_DYNAMIC); + filterShortcutsAndAssertNumStaticAndDynamic(createShortcutsList(5, 1), MAX_SHORTCUTS - 1, 1); + filterShortcutsAndAssertNumStaticAndDynamic(createShortcutsList(1, 5), 1, MAX_SHORTCUTS - 1); filterShortcutsAndAssertNumStaticAndDynamic(createShortcutsList(5, 3), - MAX_ITEMS - NUM_DYNAMIC, NUM_DYNAMIC); + MAX_SHORTCUTS - NUM_DYNAMIC, NUM_DYNAMIC); filterShortcutsAndAssertNumStaticAndDynamic(createShortcutsList(3, 5), - MAX_ITEMS - NUM_DYNAMIC, NUM_DYNAMIC); + MAX_SHORTCUTS - NUM_DYNAMIC, NUM_DYNAMIC); } @Test diff --git a/tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java b/tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java index df2b66285..97f7b505a 100644 --- a/tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java +++ b/tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java @@ -39,13 +39,12 @@ import com.android.launcher3.compat.AppWidgetManagerCompat; import com.android.launcher3.compat.PackageInstallerCompat; import com.android.launcher3.ui.LauncherInstrumentationTestCase; import com.android.launcher3.util.ContentWriter; -import com.android.launcher3.util.LooperExecuter; +import com.android.launcher3.util.LooperExecutor; import com.android.launcher3.widget.PendingAddWidgetInfo; import com.android.launcher3.widget.WidgetHostViewLoader; import java.util.Set; import java.util.concurrent.Callable; -import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; /** @@ -340,7 +339,7 @@ public class BindWidgetTest extends LauncherInstrumentationTestCase { * Blocks the current thread until all the jobs in the main worker thread are complete. */ private void waitUntilLoaderIdle() throws Exception { - new LooperExecuter(LauncherModel.getWorkerLooper()) + new LooperExecutor(LauncherModel.getWorkerLooper()) .submit(new Runnable() { @Override public void run() { } diff --git a/tests/src/com/android/launcher3/util/TestLauncherProvider.java b/tests/src/com/android/launcher3/util/TestLauncherProvider.java index 6ca212165..1d6c18b17 100644 --- a/tests/src/com/android/launcher3/util/TestLauncherProvider.java +++ b/tests/src/com/android/launcher3/util/TestLauncherProvider.java @@ -1,6 +1,7 @@ package com.android.launcher3.util; import android.content.Context; +import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import com.android.launcher3.LauncherProvider; @@ -43,5 +44,8 @@ public class TestLauncherProvider extends LauncherProvider { @Override protected void onEmptyDbCreated() { } + + @Override + protected void handleOneTimeDataUpgrade(SQLiteDatabase db) { } } }
\ No newline at end of file |