michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: package org.mozilla.gecko.background.helpers; michael@0: michael@0: import java.io.File; michael@0: michael@0: import android.content.ContentProvider; michael@0: import android.content.Context; michael@0: import android.test.AndroidTestCase; michael@0: import android.test.mock.MockContentResolver; michael@0: michael@0: /** michael@0: * Because ProviderTestCase2 is unable to handle custom DB paths. michael@0: */ michael@0: public abstract class DBProviderTestCase extends michael@0: AndroidTestCase { michael@0: michael@0: Class providerClass; michael@0: String providerAuthority; michael@0: michael@0: protected File fakeProfileDirectory; michael@0: private MockContentResolver resolver; michael@0: private T provider; michael@0: michael@0: public DBProviderTestCase(Class providerClass, String providerAuthority) { michael@0: this.providerClass = providerClass; michael@0: this.providerAuthority = providerAuthority; michael@0: } michael@0: michael@0: public T getProvider() { michael@0: return provider; michael@0: } michael@0: michael@0: public MockContentResolver getMockContentResolver() { michael@0: return resolver; michael@0: } michael@0: michael@0: protected String getCacheSuffix() { michael@0: return this.getClass().getName() + "-" + System.currentTimeMillis(); michael@0: } michael@0: michael@0: @Override michael@0: protected void setUp() throws Exception { michael@0: super.setUp(); michael@0: michael@0: File cache = getContext().getCacheDir(); michael@0: fakeProfileDirectory = new File(cache.getAbsolutePath() + getCacheSuffix()); michael@0: System.out.println("Test: Creating profile directory " + fakeProfileDirectory.getAbsolutePath()); michael@0: if (!fakeProfileDirectory.mkdir()) { michael@0: throw new IllegalStateException("Could not create temporary directory."); michael@0: } michael@0: michael@0: final Context context = getContext(); michael@0: assertNotNull(context); michael@0: resolver = new MockContentResolver(); michael@0: provider = providerClass.newInstance(); michael@0: provider.attachInfo(context, null); michael@0: assertNotNull(provider); michael@0: resolver.addProvider(providerAuthority, getProvider()); michael@0: } michael@0: michael@0: @Override michael@0: protected void tearDown() throws Exception { michael@0: // We don't check return values. michael@0: System.out.println("Test: Cleaning up " + fakeProfileDirectory.getAbsolutePath()); michael@0: for (File child : fakeProfileDirectory.listFiles()) { michael@0: child.delete(); michael@0: } michael@0: fakeProfileDirectory.delete(); michael@0: super.tearDown(); michael@0: } michael@0: }