diff options
author | Dmitri Plotnikov <dplotnikov@google.com> | 2010-07-16 17:51:36 -0700 |
---|---|---|
committer | Dmitri Plotnikov <dplotnikov@google.com> | 2010-07-16 17:51:36 -0700 |
commit | eb4a5d0aeb8c7f1bf1c5aba675951006bc3e209c (patch) | |
tree | 89ccca4ac1f370f891c8a3135fb0c9e98ba7b844 /tests | |
parent | 1010574de981eae8d12d1d0ae1b6fd5f19ca4a01 (diff) | |
download | packages_apps_Contacts-eb4a5d0aeb8c7f1bf1c5aba675951006bc3e209c.tar.gz packages_apps_Contacts-eb4a5d0aeb8c7f1bf1c5aba675951006bc3e209c.tar.bz2 packages_apps_Contacts-eb4a5d0aeb8c7f1bf1c5aba675951006bc3e209c.zip |
Fixing a broken test
Change-Id: Icced148d376a1e6cd8e810be72b208fa25021b4a
Diffstat (limited to 'tests')
3 files changed, 92 insertions, 63 deletions
diff --git a/tests/src/com/android/contacts/DefaultContactBrowseListFragmentTest.java b/tests/src/com/android/contacts/DefaultContactBrowseListFragmentTest.java index 40607bf57..8ad3cb9a7 100644 --- a/tests/src/com/android/contacts/DefaultContactBrowseListFragmentTest.java +++ b/tests/src/com/android/contacts/DefaultContactBrowseListFragmentTest.java @@ -19,15 +19,15 @@ package com.android.contacts; import com.android.contacts.list.DefaultContactBrowseListFragment; import com.android.contacts.tests.mocks.ContactsMockContext; import com.android.contacts.tests.mocks.MockContentProvider; -import com.android.contacts.widget.LoaderManagingFragmentTestDelegate; +import com.android.contacts.widget.TestLoaderManager; import android.database.Cursor; import android.provider.ContactsContract; -import android.provider.Settings; import android.provider.ContactsContract.ContactCounts; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.ProviderStatus; import android.provider.ContactsContract.StatusUpdates; +import android.provider.Settings; import android.test.InstrumentationTestCase; import android.test.suitebuilder.annotation.Smoke; import android.view.LayoutInflater; @@ -101,11 +101,11 @@ public class DefaultContactBrowseListFragmentTest DefaultContactBrowseListFragment fragment = new DefaultContactBrowseListFragment(); - LoaderManagingFragmentTestDelegate<Cursor> delegate = - new LoaderManagingFragmentTestDelegate<Cursor>(); + TestLoaderManager loaderManager = new TestLoaderManager(); - // Divert loader registration to the delegate to ensure that loading is done synchronously -// fragment.setDelegate(delegate); + // Divert loader registration the TestLoaderManager to ensure that loading is + // done synchronously + fragment.setLoaderManager(loaderManager); // Fragment life cycle fragment.onCreate(null); @@ -121,7 +121,7 @@ public class DefaultContactBrowseListFragmentTest fragment.onStart(); // All loaders have been registered. Now perform the loading synchronously. - delegate.executeLoaders(); + loaderManager.executeLoaders(); // Now we can assert that the data got loaded into the list. ListView listView = (ListView)view.findViewById(android.R.id.list); diff --git a/tests/src/com/android/contacts/widget/LoaderManagingFragmentTestDelegate.java b/tests/src/com/android/contacts/widget/LoaderManagingFragmentTestDelegate.java deleted file mode 100644 index 353bfc72f..000000000 --- a/tests/src/com/android/contacts/widget/LoaderManagingFragmentTestDelegate.java +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2010 Google Inc. All Rights Reserved. - -package com.android.contacts.widget; - -import android.content.AsyncTaskLoader; -import android.content.Loader; - -import java.util.LinkedHashMap; - -import junit.framework.Assert; - -/** - * A delegate of {@link InstrumentedLoaderManagingFragment} that performs - * synchronous loading on demand for unit testing. - */ -public class LoaderManagingFragmentTestDelegate<D> { - - // Using a linked hash map to get all loading done in a predictable order. - private LinkedHashMap<Integer, Loader<D>> mStartedLoaders = - new LinkedHashMap<Integer, Loader<D>>(); - - public void onStartLoading(Loader<D> loader) { - int id = loader.getId(); - mStartedLoaders.put(id, loader); - } - - /** - * Synchronously runs all started loaders. - */ - public void executeLoaders() { - for (Loader<D> loader : mStartedLoaders.values()) { - executeLoader(loader); - } - } - - /** - * Synchronously runs the specified loader. - */ - public void executeLoader(int id) { - Loader<D> loader = mStartedLoaders.get(id); - if (loader == null) { - Assert.fail("Loader not started: " + id); - } - executeLoader(loader); - } - - private void executeLoader(Loader<D> loader) { - if (loader instanceof AsyncTaskLoader) { - AsyncTaskLoader<D> atLoader = (AsyncTaskLoader<D>)loader; - D data = atLoader.loadInBackground(); - atLoader.deliverResult(data); - } else { - loader.forceLoad(); - } - } -}
\ No newline at end of file diff --git a/tests/src/com/android/contacts/widget/TestLoaderManager.java b/tests/src/com/android/contacts/widget/TestLoaderManager.java new file mode 100644 index 000000000..7d292ae8b --- /dev/null +++ b/tests/src/com/android/contacts/widget/TestLoaderManager.java @@ -0,0 +1,85 @@ +// Copyright 2010 Google Inc. All Rights Reserved. + +package com.android.contacts.widget; + +import android.app.LoaderManager; +import android.content.AsyncTaskLoader; +import android.content.Loader; +import android.content.Loader.OnLoadCompleteListener; +import android.os.Bundle; + +import java.util.LinkedHashMap; + +import junit.framework.Assert; + +/** + * A {@link LoaderManager} that performs synchronous loading on demand for unit + * testing. + */ +public class TestLoaderManager implements LoaderManager { + + // Using a linked hash map to get all loading done in a predictable order. + private LinkedHashMap<Integer, Loader<?>> mStartedLoaders = new LinkedHashMap< + Integer, Loader<?>>(); + + @Override + @SuppressWarnings("unchecked") + public <D> Loader<D> getLoader(int id) { + return (Loader<D>)mStartedLoaders.get(id); + } + + @Override + public <D> Loader<D> initLoader(int id, Bundle args, final LoaderCallbacks<D> callbacks) { + Loader<D> loader = callbacks.onCreateLoader(id, args); + loader.registerListener(id, new OnLoadCompleteListener<D>() { + @Override + public void onLoadComplete(Loader<D> loader, D data) { + callbacks.onLoadFinished(loader, data); + } + }); + + mStartedLoaders.put(id, loader); + return loader; + } + + @Override + public <D> Loader<D> restartLoader(int id, Bundle args, LoaderCallbacks<D> callbacks) { + return initLoader(id, args, callbacks); + } + + @Override + public void stopLoader(int id) { + mStartedLoaders.get(id).stopLoading(); + } + + /** + * Synchronously runs all started loaders. + */ + public void executeLoaders() { + for (Loader<?> loader : mStartedLoaders.values()) { + executeLoader(loader); + } + } + + /** + * Synchronously runs the specified loader. + */ + public void executeLoader(int id) { + Loader<?> loader = mStartedLoaders.get(id); + if (loader == null) { + Assert.fail("Loader not started: " + id); + } + executeLoader(loader); + } + + @SuppressWarnings("unchecked") + private <D> void executeLoader(final Loader<D> loader) { + if (loader instanceof AsyncTaskLoader) { + AsyncTaskLoader<D> atLoader = (AsyncTaskLoader<D>)loader; + D data = atLoader.loadInBackground(); + loader.deliverResult(data); + } else { + loader.forceLoad(); + } + } +} |