diff options
Diffstat (limited to 'tests/src/com/android/launcher3/model/PackageInstallStateChangedTaskTest.java')
-rw-r--r-- | tests/src/com/android/launcher3/model/PackageInstallStateChangedTaskTest.java | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/tests/src/com/android/launcher3/model/PackageInstallStateChangedTaskTest.java b/tests/src/com/android/launcher3/model/PackageInstallStateChangedTaskTest.java new file mode 100644 index 0000000000..519191e251 --- /dev/null +++ b/tests/src/com/android/launcher3/model/PackageInstallStateChangedTaskTest.java @@ -0,0 +1,83 @@ +package com.android.launcher3.model; + +import static org.junit.Assert.assertEquals; + +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.filters.SmallTest; + +import com.android.launcher3.model.data.ItemInfo; +import com.android.launcher3.model.data.LauncherAppWidgetInfo; +import com.android.launcher3.model.data.WorkspaceItemInfo; +import com.android.launcher3.pm.PackageInstallInfo; +import com.android.launcher3.util.LauncherModelHelper; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.Arrays; +import java.util.HashSet; + +/** + * Tests for {@link PackageInstallStateChangedTask} + */ +@SmallTest +@RunWith(AndroidJUnit4.class) +public class PackageInstallStateChangedTaskTest { + + private LauncherModelHelper mModelHelper; + + @Before + public void setup() throws Exception { + mModelHelper = new LauncherModelHelper(); + mModelHelper.initializeData("package_install_state_change_task_data"); + } + + @After + public void tearDown() { + mModelHelper.destroy(); + } + + private PackageInstallStateChangedTask newTask(String pkg, int progress) { + int state = PackageInstallInfo.STATUS_INSTALLING; + PackageInstallInfo installInfo = new PackageInstallInfo(pkg, state, progress, + android.os.Process.myUserHandle()); + return new PackageInstallStateChangedTask(installInfo); + } + + @Test + public void testSessionUpdate_ignore_installed() throws Exception { + mModelHelper.executeTaskForTest(newTask("app1", 30)); + + // No shortcuts were updated + verifyProgressUpdate(0); + } + + @Test + public void testSessionUpdate_shortcuts_updated() throws Exception { + mModelHelper.executeTaskForTest(newTask("app3", 30)); + + verifyProgressUpdate(30, 5, 6, 7); + } + + @Test + public void testSessionUpdate_widgets_updated() throws Exception { + mModelHelper.executeTaskForTest(newTask("app4", 30)); + + verifyProgressUpdate(30, 8, 9); + } + + private void verifyProgressUpdate(int progress, Integer... idsUpdated) { + HashSet<Integer> updates = new HashSet<>(Arrays.asList(idsUpdated)); + for (ItemInfo info : mModelHelper.getBgDataModel().itemsIdMap) { + if (info instanceof WorkspaceItemInfo) { + assertEquals(updates.contains(info.id) ? progress: 100, + ((WorkspaceItemInfo) info).getProgressLevel()); + } else { + assertEquals(updates.contains(info.id) ? progress: -1, + ((LauncherAppWidgetInfo) info).installProgress); + } + } + } +} |