From 60451a050f757777748b24367728ac966b28b799 Mon Sep 17 00:00:00 2001 From: Peter Serwylo Date: Mon, 6 Jun 2016 23:56:46 +1000 Subject: [PATCH] Remove unused test code. Many of the `Mock*` classes are there to deal with idiosyncrosies of the Android SDK, including `final`/package local/`@Hide` annotations/etc. They are no longer required with robolectric tests. --- .../java/mock/MockApplicationInfo.java | 29 --- .../java/mock/MockCategoryResources.java | 27 --- .../java/mock/MockContextEmptyComponents.java | 14 -- .../mock/MockContextSwappableComponents.java | 43 ----- .../java/mock/MockEmptyPackageManager.java | 16 -- .../java/mock/MockEmptyResources.java | 12 -- .../java/mock/MockFDroidResources.java | 37 ---- .../mock/MockInstallablePackageManager.java | 61 ------ .../java/org/fdroid/fdroid/TestUtils.java | 123 ------------ .../fdroid/data/FDroidProviderTestOld.java | 177 ------------------ .../fdroid/data/InstalledAppCacheTest.java | 177 ------------------ 11 files changed, 716 deletions(-) delete mode 100644 app/src/androidTest/java/mock/MockApplicationInfo.java delete mode 100644 app/src/androidTest/java/mock/MockCategoryResources.java delete mode 100644 app/src/androidTest/java/mock/MockContextEmptyComponents.java delete mode 100644 app/src/androidTest/java/mock/MockContextSwappableComponents.java delete mode 100644 app/src/androidTest/java/mock/MockEmptyPackageManager.java delete mode 100644 app/src/androidTest/java/mock/MockEmptyResources.java delete mode 100644 app/src/androidTest/java/mock/MockFDroidResources.java delete mode 100644 app/src/androidTest/java/mock/MockInstallablePackageManager.java delete mode 100644 app/src/androidTest/java/org/fdroid/fdroid/data/FDroidProviderTestOld.java delete mode 100644 app/src/androidTest/java/org/fdroid/fdroid/data/InstalledAppCacheTest.java diff --git a/app/src/androidTest/java/mock/MockApplicationInfo.java b/app/src/androidTest/java/mock/MockApplicationInfo.java deleted file mode 100644 index 1ab4592a4..000000000 --- a/app/src/androidTest/java/mock/MockApplicationInfo.java +++ /dev/null @@ -1,29 +0,0 @@ -package mock; - -import android.annotation.SuppressLint; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; - -import java.io.File; -import java.io.IOException; - -@SuppressLint("ParcelCreator") -public class MockApplicationInfo extends ApplicationInfo { - - private final PackageInfo info; - - public MockApplicationInfo(PackageInfo info) { - this.info = info; - try { - this.publicSourceDir = File.createTempFile(info.packageName, "apk").getAbsolutePath(); - } catch (IOException e) { - this.publicSourceDir = "/data/app/" + info.packageName + "-4.apk"; - } - } - - @Override - public CharSequence loadLabel(PackageManager pm) { - return "Mock app: " + info.packageName; - } -} diff --git a/app/src/androidTest/java/mock/MockCategoryResources.java b/app/src/androidTest/java/mock/MockCategoryResources.java deleted file mode 100644 index 0f88ade9f..000000000 --- a/app/src/androidTest/java/mock/MockCategoryResources.java +++ /dev/null @@ -1,27 +0,0 @@ -package mock; - -import android.content.Context; - -import org.fdroid.fdroid.R; - -public class MockCategoryResources extends MockFDroidResources { - - public MockCategoryResources(Context getStringDelegatingContext) { - super(getStringDelegatingContext); - } - - @Override - public String getString(int id) { - switch (id) { - case R.string.category_All: - return "All"; - case R.string.category_Recently_Updated: - return "Recently Updated"; - case R.string.category_Whats_New: - return "Whats New"; - default: - return ""; - } - } - -} diff --git a/app/src/androidTest/java/mock/MockContextEmptyComponents.java b/app/src/androidTest/java/mock/MockContextEmptyComponents.java deleted file mode 100644 index eb962bbe9..000000000 --- a/app/src/androidTest/java/mock/MockContextEmptyComponents.java +++ /dev/null @@ -1,14 +0,0 @@ -package mock; - -/** - * As more components are required to test different parts of F-Droid, we can - * create them and add them here (and accessors to the parent class). - */ -public class MockContextEmptyComponents extends MockContextSwappableComponents { - - public MockContextEmptyComponents() { - setPackageManager(new MockEmptyPackageManager()); - setResources(new MockEmptyResources()); - } - -} diff --git a/app/src/androidTest/java/mock/MockContextSwappableComponents.java b/app/src/androidTest/java/mock/MockContextSwappableComponents.java deleted file mode 100644 index 5d94967f2..000000000 --- a/app/src/androidTest/java/mock/MockContextSwappableComponents.java +++ /dev/null @@ -1,43 +0,0 @@ -package mock; - -import android.content.pm.PackageManager; -import android.content.res.Resources; -import android.test.mock.MockContentResolver; -import android.test.mock.MockContext; - -public class MockContextSwappableComponents extends MockContext { - - private PackageManager packageManager; - private Resources resources; - private MockContentResolver contentResolver; - - public MockContextSwappableComponents setPackageManager(PackageManager pm) { - packageManager = pm; - return this; - } - - public MockContextSwappableComponents setResources(Resources resources) { - this.resources = resources; - return this; - } - - public MockContextSwappableComponents setContentResolver(MockContentResolver contentResolver) { - this.contentResolver = contentResolver; - return this; - } - - @Override - public PackageManager getPackageManager() { - return packageManager; - } - - @Override - public Resources getResources() { - return resources; - } - - @Override - public MockContentResolver getContentResolver() { - return contentResolver; - } -} diff --git a/app/src/androidTest/java/mock/MockEmptyPackageManager.java b/app/src/androidTest/java/mock/MockEmptyPackageManager.java deleted file mode 100644 index 463864179..000000000 --- a/app/src/androidTest/java/mock/MockEmptyPackageManager.java +++ /dev/null @@ -1,16 +0,0 @@ -package mock; - -import android.content.pm.PackageInfo; -import android.test.mock.MockPackageManager; - -import java.util.ArrayList; -import java.util.List; - -public class MockEmptyPackageManager extends MockPackageManager { - - @Override - public List getInstalledPackages(int flags) { - return new ArrayList<>(); - } - -} diff --git a/app/src/androidTest/java/mock/MockEmptyResources.java b/app/src/androidTest/java/mock/MockEmptyResources.java deleted file mode 100644 index fdc06e47f..000000000 --- a/app/src/androidTest/java/mock/MockEmptyResources.java +++ /dev/null @@ -1,12 +0,0 @@ -package mock; - -import android.test.mock.MockResources; - -public class MockEmptyResources extends MockResources { - - @Override - public String getString(int id) { - return ""; - } - -} diff --git a/app/src/androidTest/java/mock/MockFDroidResources.java b/app/src/androidTest/java/mock/MockFDroidResources.java deleted file mode 100644 index 5cb33798c..000000000 --- a/app/src/androidTest/java/mock/MockFDroidResources.java +++ /dev/null @@ -1,37 +0,0 @@ -package mock; - -import android.content.Context; -import android.test.mock.MockResources; - -import org.fdroid.fdroid.R; - -public class MockFDroidResources extends MockResources { - - private final Context getStringDelegatingContext; - - public MockFDroidResources(Context getStringDelegatingContext) { - this.getStringDelegatingContext = getStringDelegatingContext; - } - - @Override - public String getString(int id) { - return getStringDelegatingContext.getString(id); - } - - @Override - public int getInteger(int id) { - switch (id) { - case R.integer.fdroid_repo_inuse: - return 1; - case R.integer.fdroid_archive_inuse: - return 0; - case R.integer.fdroid_repo_priority: - return 10; - case R.integer.fdroid_archive_priority: - return 20; - default: - return 0; - } - } - -} diff --git a/app/src/androidTest/java/mock/MockInstallablePackageManager.java b/app/src/androidTest/java/mock/MockInstallablePackageManager.java deleted file mode 100644 index 1fcef1e86..000000000 --- a/app/src/androidTest/java/mock/MockInstallablePackageManager.java +++ /dev/null @@ -1,61 +0,0 @@ -package mock; - -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo; -import android.test.mock.MockPackageManager; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -public class MockInstallablePackageManager extends MockPackageManager { - - private final List info = new ArrayList<>(); - - @Override - public List getInstalledPackages(int flags) { - return info; - } - - @Override - public PackageInfo getPackageInfo(String id, int flags) { - for (PackageInfo i : info) { - if (i.packageName.equals(id)) { - return i; - } - } - return null; - } - - public void install(String id, int version, String versionName) { - PackageInfo existing = getPackageInfo(id, 0); - if (existing != null) { - existing.versionCode = version; - existing.versionName = versionName; - } else { - PackageInfo p = new PackageInfo(); - p.packageName = id; - p.versionCode = version; - p.versionName = versionName; - p.applicationInfo = new MockApplicationInfo(p); - p.lastUpdateTime = System.currentTimeMillis(); - info.add(p); - } - } - - @Override - public ApplicationInfo getApplicationInfo(String packageName, int flags) throws NameNotFoundException { - return new MockApplicationInfo(getPackageInfo(packageName, 0)); - } - - public void remove(String id) { - for (Iterator it = info.iterator(); it.hasNext();) { - PackageInfo info = it.next(); - if (info.packageName.equals(id)) { - it.remove(); - return; - } - } - } - -} diff --git a/app/src/androidTest/java/org/fdroid/fdroid/TestUtils.java b/app/src/androidTest/java/org/fdroid/fdroid/TestUtils.java index e51790abb..e30070124 100644 --- a/app/src/androidTest/java/org/fdroid/fdroid/TestUtils.java +++ b/app/src/androidTest/java/org/fdroid/fdroid/TestUtils.java @@ -1,144 +1,21 @@ package org.fdroid.fdroid; import android.app.Instrumentation; -import android.content.ContentResolver; -import android.content.ContentValues; import android.content.Context; -import android.net.Uri; import android.os.Environment; import android.support.annotation.Nullable; import android.util.Log; -import junit.framework.AssertionFailedError; - -import org.fdroid.fdroid.data.ApkProvider; -import org.fdroid.fdroid.data.AppProvider; -import org.fdroid.fdroid.data.FDroidProviderTestOld; - import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; public class TestUtils { private static final String TAG = "TestUtils"; - public static void assertContainsOnly(List actualList, T[] expectedArray) { - List expectedList = new ArrayList<>(expectedArray.length); - Collections.addAll(expectedList, expectedArray); - assertContainsOnly(actualList, expectedList); - } - - public static void assertContainsOnly(T[] actualArray, List expectedList) { - List actualList = new ArrayList<>(actualArray.length); - Collections.addAll(actualList, actualArray); - assertContainsOnly(actualList, expectedList); - } - - public static void assertContainsOnly(T[] actualArray, T[] expectedArray) { - List expectedList = new ArrayList<>(expectedArray.length); - Collections.addAll(expectedList, expectedArray); - assertContainsOnly(actualArray, expectedList); - } - - public static String listToString(List list) { - String string = "["; - for (int i = 0; i < list.size(); i++) { - if (i > 0) { - string += ", "; - } - string += "'" + list.get(i) + "'"; - } - string += "]"; - return string; - } - - public static void assertContainsOnly(List actualList, List expectedContains) { - if (actualList.size() != expectedContains.size()) { - String message = - "List sizes don't match.\n" + - "Expected: " + - listToString(expectedContains) + "\n" + - "Actual: " + - listToString(actualList); - throw new AssertionFailedError(message); - } - for (T required : expectedContains) { - boolean containsRequired = false; - for (T itemInList : actualList) { - if (required.equals(itemInList)) { - containsRequired = true; - break; - } - } - if (!containsRequired) { - String message = - "List doesn't contain \"" + required + "\".\n" + - "Expected: " + - listToString(expectedContains) + "\n" + - "Actual: " + - listToString(actualList); - throw new AssertionFailedError(message); - } - } - } - - public static void insertApp(ContentResolver resolver, String appId, String name) { - insertApp(resolver, appId, name, new ContentValues()); - } - - public static void insertApp(ContentResolver resolver, String id, String name, ContentValues additionalValues) { - - ContentValues values = new ContentValues(); - values.put(AppProvider.DataColumns.PACKAGE_NAME, id); - values.put(AppProvider.DataColumns.NAME, name); - - // Required fields (NOT NULL in the database). - values.put(AppProvider.DataColumns.SUMMARY, "test summary"); - values.put(AppProvider.DataColumns.DESCRIPTION, "test description"); - values.put(AppProvider.DataColumns.LICENSE, "GPL?"); - values.put(AppProvider.DataColumns.IS_COMPATIBLE, 1); - values.put(AppProvider.DataColumns.IGNORE_ALLUPDATES, 0); - values.put(AppProvider.DataColumns.IGNORE_THISUPDATE, 0); - - values.putAll(additionalValues); - - Uri uri = AppProvider.getContentUri(); - - resolver.insert(uri, values); - } - - public static Uri insertApk(FDroidProviderTestOld providerTest, String id, int versionCode) { - return insertApk(providerTest, id, versionCode, new ContentValues()); - } - - public static Uri insertApk(FDroidProviderTestOld providerTest, String id, int versionCode, ContentValues additionalValues) { - - ContentValues values = new ContentValues(); - - values.put(ApkProvider.DataColumns.PACKAGE_NAME, id); - values.put(ApkProvider.DataColumns.VERSION_CODE, versionCode); - - // Required fields (NOT NULL in the database). - values.put(ApkProvider.DataColumns.REPO_ID, 1); - values.put(ApkProvider.DataColumns.VERSION_NAME, "The good one"); - values.put(ApkProvider.DataColumns.HASH, "11111111aaaaaaaa"); - values.put(ApkProvider.DataColumns.NAME, "Test Apk"); - values.put(ApkProvider.DataColumns.SIZE, 10000); - values.put(ApkProvider.DataColumns.IS_COMPATIBLE, 1); - - values.putAll(additionalValues); - - Uri uri = ApkProvider.getContentUri(); - - return providerTest.getMockContentResolver().insert(uri, values); - } - @Nullable public static File copyAssetToDir(Context context, String assetName, File directory) { File tempFile; diff --git a/app/src/androidTest/java/org/fdroid/fdroid/data/FDroidProviderTestOld.java b/app/src/androidTest/java/org/fdroid/fdroid/data/FDroidProviderTestOld.java deleted file mode 100644 index 4767aa4c4..000000000 --- a/app/src/androidTest/java/org/fdroid/fdroid/data/FDroidProviderTestOld.java +++ /dev/null @@ -1,177 +0,0 @@ -package org.fdroid.fdroid.data; - -import android.content.ContentValues; -import android.content.Context; -import android.content.res.Resources; -import android.database.Cursor; -import android.net.Uri; -import android.provider.ContactsContract; -import android.test.ProviderTestCase2MockContext; - -import java.util.List; - -import mock.MockContextEmptyComponents; -import mock.MockContextSwappableComponents; -import mock.MockFDroidResources; - -@SuppressWarnings("PMD") // TODO port this to JUnit 4 semantics -public abstract class FDroidProviderTestOld extends ProviderTestCase2MockContext { - - private FDroidProvider[] allProviders = { - new AppProvider(), - new RepoProvider(), - new ApkProvider(), - new InstalledAppProvider(), - }; - - private MockContextSwappableComponents swappableContext; - - public FDroidProviderTestOld(Class providerClass, String providerAuthority) { - super(providerClass, providerAuthority); - } - - protected Resources getMockResources() { - return new MockFDroidResources(getContext()); - } - - @Override - public void setUp() throws Exception { - super.setUp(); - - FDroidProvider.clearDbHelperSingleton(); - - // Instantiate all providers other than the one which was already created by the base class. - // This is because F-Droid providers tend to perform joins onto tables managed by other - // providers, and so we need to be able to insert into those other providers for these - // joins to be tested correctly. - for (FDroidProvider provider : allProviders) { - if (!provider.getName().equals(getProvider().getName())) { - provider.attachInfo(getMockContext(), null); - getMockContentResolver().addProvider(provider.getName(), provider); - } - } - - getSwappableContext().setResources(getMockResources()); - - // The *Provider.Helper.* functions tend to take a Context as their - // first parameter. This context is used to connect to the relevant - // content provider. Thus, we need a context that is able to connect - // to the mock content resolver, in order to reach the provider - // under test. - getSwappableContext().setContentResolver(getMockContentResolver()); - - } - - public void testObviouslyInvalidUris() { - assertInvalidUri("http://www.google.com"); - assertInvalidUri(ContactsContract.AUTHORITY_URI); - assertInvalidUri("junk"); - } - - @Override - protected Context createMockContext(Context delegate) { - swappableContext = new MockContextEmptyComponents(); - return swappableContext; - } - - public MockContextSwappableComponents getSwappableContext() { - return swappableContext; - } - - protected void assertCantDelete(Uri uri) { - try { - getMockContentResolver().delete(uri, null, null); - fail(); - } catch (UnsupportedOperationException e) { - } catch (Exception e) { - fail(); - } - } - - protected void assertCantUpdate(Uri uri) { - try { - getMockContentResolver().update(uri, new ContentValues(), null, null); - fail(); - } catch (UnsupportedOperationException e) { - } catch (Exception e) { - fail(); - } - } - - protected void assertInvalidUri(String uri) { - assertInvalidUri(Uri.parse(uri)); - } - - protected void assertValidUri(String uri) { - assertValidUri(Uri.parse(uri)); - } - - protected void assertInvalidUri(Uri uri) { - try { - // Use getProvdider instead of getContentResolver, because the mock - // content resolver wont result in the provider we are testing, and - // hence we don't get to see how our provider responds to invalid - // uris. - getProvider().query(uri, getMinimalProjection(), null, null, null); - fail(); - } catch (UnsupportedOperationException e) { } - } - - protected void assertValidUri(Uri uri) { - Cursor cursor = getMockContentResolver().query(uri, getMinimalProjection(), null, null, null); - assertNotNull(cursor); - cursor.close(); - } - - protected void assertValidUri(Uri actualUri, String expectedUri) { - assertValidUri(actualUri); - assertEquals(expectedUri, actualUri.toString()); - } - - /** - * Many queries need at least some sort of projection in order to produce - * valid SQL. As such, we also need to know about that, so we can provide - * helper functions that revolve around the contnet provider under test. - */ - protected abstract String[] getMinimalProjection(); - - protected void assertResultCount(int expectedCount, Uri uri) { - Cursor cursor = getMockContentResolver().query(uri, getMinimalProjection(), null, null, null); - assertResultCount(expectedCount, cursor); - cursor.close(); - } - - protected void assertResultCount(int expectedCount, List items) { - assertNotNull(items); - assertEquals(expectedCount, items.size()); - } - - protected void assertResultCount(int expectedCount, Cursor result) { - assertNotNull(result); - assertEquals(expectedCount, result.getCount()); - } - - protected void assertIsInstalledVersionInDb(String appId, int versionCode, String versionName) { - Uri uri = InstalledAppProvider.getAppUri(appId); - - String[] projection = { - InstalledAppProvider.DataColumns.PACKAGE_NAME, - InstalledAppProvider.DataColumns.VERSION_CODE, - InstalledAppProvider.DataColumns.VERSION_NAME, - InstalledAppProvider.DataColumns.APPLICATION_LABEL, - }; - - Cursor cursor = getMockContentResolver().query(uri, projection, null, null, null); - - assertNotNull(cursor); - assertEquals("App \"" + appId + "\" not installed", 1, cursor.getCount()); - - cursor.moveToFirst(); - - assertEquals(appId, cursor.getString(cursor.getColumnIndex(InstalledAppProvider.DataColumns.PACKAGE_NAME))); - assertEquals(versionCode, cursor.getInt(cursor.getColumnIndex(InstalledAppProvider.DataColumns.VERSION_CODE))); - assertEquals(versionName, cursor.getString(cursor.getColumnIndex(InstalledAppProvider.DataColumns.VERSION_NAME))); - cursor.close(); - } - -} diff --git a/app/src/androidTest/java/org/fdroid/fdroid/data/InstalledAppCacheTest.java b/app/src/androidTest/java/org/fdroid/fdroid/data/InstalledAppCacheTest.java deleted file mode 100644 index f63d11b90..000000000 --- a/app/src/androidTest/java/org/fdroid/fdroid/data/InstalledAppCacheTest.java +++ /dev/null @@ -1,177 +0,0 @@ -package org.fdroid.fdroid.data; - -import mock.MockInstallablePackageManager; - -/** - * Tests the ability of the {@link InstalledAppCacheUpdater} to stay in sync with - * the {@link android.content.pm.PackageManager}. - * For practical reasons, it extends FDroidProviderTestOld, although there is also a - * separate test for the InstalledAppProvider which tests the CRUD operations in more detail. - */ -@SuppressWarnings("PMD") // TODO port this to JUnit 4 semantics -public class InstalledAppCacheTest extends FDroidProviderTestOld { - - private MockInstallablePackageManager packageManager; - - public InstalledAppCacheTest() { - super(InstalledAppProvider.class, InstalledAppProvider.getAuthority()); - } - - @Override - public void setUp() throws Exception { - super.setUp(); - packageManager = new MockInstallablePackageManager(); - getSwappableContext().setPackageManager(packageManager); - } - - @Override - protected String[] getMinimalProjection() { - return new String[] { - InstalledAppProvider.DataColumns.PACKAGE_NAME, - }; - } - - public void install(String appId, int versionCode, String versionName) { - packageManager.install(appId, versionCode, versionName); - } - - public void remove(String appId) { - packageManager.remove(appId); - } - -/* TODO fix me - public void testFromEmptyCache() { - assertResultCount(0, InstalledAppProvider.getContentUri()); - for (int i = 1; i <= 15; i ++) { - install("com.example.app" + i, 200, "2.0"); - } - InstalledAppCacheUpdater.updateInForeground(getMockContext()); - - String[] expectedInstalledIds = { - "com.example.app1", - "com.example.app2", - "com.example.app3", - "com.example.app4", - "com.example.app5", - "com.example.app6", - "com.example.app7", - "com.example.app8", - "com.example.app9", - "com.example.app10", - "com.example.app11", - "com.example.app12", - "com.example.app13", - "com.example.app14", - "com.example.app15", - }; - - TestUtils.assertContainsOnly(getInstalledAppIdsFromProvider(), expectedInstalledIds); - } - - private String[] getInstalledAppIdsFromProvider() { - Uri uri = InstalledAppProvider.getContentUri(); - String[] projection = { InstalledAppProvider.DataColumns.PACKAGE_NAME }; - Cursor result = getMockContext().getContentResolver().query(uri, projection, null, null, null); - if (result == null) { - return new String[0]; - } - - String[] installedAppIds = new String[result.getCount()]; - result.moveToFirst(); - int i = 0; - while (!result.isAfterLast()) { - installedAppIds[i] = result.getString(result.getColumnIndex(InstalledAppProvider.DataColumns.PACKAGE_NAME)); - result.moveToNext(); - i ++; - } - result.close(); - return installedAppIds; - } - - public void testAppsAdded() { - assertResultCount(0, InstalledAppProvider.getContentUri()); - - install("com.example.app1", 1, "v1"); - install("com.example.app2", 1, "v1"); - install("com.example.app3", 1, "v1"); - InstalledAppCacheUpdater.updateInForeground(getMockContext()); - - assertResultCount(3, InstalledAppProvider.getContentUri()); - assertIsInstalledVersionInDb("com.example.app1", 1, "v1"); - assertIsInstalledVersionInDb("com.example.app2", 1, "v1"); - assertIsInstalledVersionInDb("com.example.app3", 1, "v1"); - - install("com.example.app10", 1, "v1"); - install("com.example.app11", 1, "v1"); - install("com.example.app12", 1, "v1"); - InstalledAppCacheUpdater.updateInForeground(getMockContext()); - - assertResultCount(6, InstalledAppProvider.getContentUri()); - assertIsInstalledVersionInDb("com.example.app10", 1, "v1"); - assertIsInstalledVersionInDb("com.example.app11", 1, "v1"); - assertIsInstalledVersionInDb("com.example.app12", 1, "v1"); - } - - public void testAppsRemoved() { - install("com.example.app1", 1, "v1"); - install("com.example.app2", 1, "v1"); - install("com.example.app3", 1, "v1"); - InstalledAppCacheUpdater.updateInForeground(getMockContext()); - - assertResultCount(3, InstalledAppProvider.getContentUri()); - assertIsInstalledVersionInDb("com.example.app1", 1, "v1"); - assertIsInstalledVersionInDb("com.example.app2", 1, "v1"); - assertIsInstalledVersionInDb("com.example.app3", 1, "v1"); - - remove("com.example.app2"); - InstalledAppCacheUpdater.updateInForeground(getMockContext()); - - assertResultCount(2, InstalledAppProvider.getContentUri()); - assertIsInstalledVersionInDb("com.example.app1", 1, "v1"); - assertIsInstalledVersionInDb("com.example.app3", 1, "v1"); - } - - public void testAppsUpdated() { - install("com.example.app1", 1, "v1"); - install("com.example.app2", 1, "v1"); - InstalledAppCacheUpdater.updateInForeground(getMockContext()); - - assertResultCount(2, InstalledAppProvider.getContentUri()); - assertIsInstalledVersionInDb("com.example.app1", 1, "v1"); - assertIsInstalledVersionInDb("com.example.app2", 1, "v1"); - - install("com.example.app2", 20, "v2.0"); - InstalledAppCacheUpdater.updateInForeground(getMockContext()); - - assertResultCount(2, InstalledAppProvider.getContentUri()); - assertIsInstalledVersionInDb("com.example.app1", 1, "v1"); - assertIsInstalledVersionInDb("com.example.app2", 20, "v2.0"); - } - - public void testAppsAddedRemovedAndUpdated() { - install("com.example.app1", 1, "v1"); - install("com.example.app2", 1, "v1"); - install("com.example.app3", 1, "v1"); - install("com.example.app4", 1, "v1"); - InstalledAppCacheUpdater.updateInForeground(getMockContext()); - - assertResultCount(4, InstalledAppProvider.getContentUri()); - assertIsInstalledVersionInDb("com.example.app1", 1, "v1"); - assertIsInstalledVersionInDb("com.example.app2", 1, "v1"); - assertIsInstalledVersionInDb("com.example.app3", 1, "v1"); - assertIsInstalledVersionInDb("com.example.app4", 1, "v1"); - - install("com.example.app1", 13, "v1.3"); - remove("com.example.app2"); - remove("com.example.app3"); - install("com.example.app10", 1, "v1"); - InstalledAppCacheUpdater.updateInForeground(getMockContext()); - - assertResultCount(3, InstalledAppProvider.getContentUri()); - assertIsInstalledVersionInDb("com.example.app1", 13, "v1.3"); - assertIsInstalledVersionInDb("com.example.app4", 1, "v1"); - assertIsInstalledVersionInDb("com.example.app10", 1, "v1"); - - } -*/ -}