1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/mobile/android/tests/background/junit3/src/helpers/DBProviderTestCase.java Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,73 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +package org.mozilla.gecko.background.helpers; 1.8 + 1.9 +import java.io.File; 1.10 + 1.11 +import android.content.ContentProvider; 1.12 +import android.content.Context; 1.13 +import android.test.AndroidTestCase; 1.14 +import android.test.mock.MockContentResolver; 1.15 + 1.16 +/** 1.17 + * Because ProviderTestCase2 is unable to handle custom DB paths. 1.18 + */ 1.19 +public abstract class DBProviderTestCase<T extends ContentProvider> extends 1.20 + AndroidTestCase { 1.21 + 1.22 + Class<T> providerClass; 1.23 + String providerAuthority; 1.24 + 1.25 + protected File fakeProfileDirectory; 1.26 + private MockContentResolver resolver; 1.27 + private T provider; 1.28 + 1.29 + public DBProviderTestCase(Class<T> providerClass, String providerAuthority) { 1.30 + this.providerClass = providerClass; 1.31 + this.providerAuthority = providerAuthority; 1.32 + } 1.33 + 1.34 + public T getProvider() { 1.35 + return provider; 1.36 + } 1.37 + 1.38 + public MockContentResolver getMockContentResolver() { 1.39 + return resolver; 1.40 + } 1.41 + 1.42 + protected String getCacheSuffix() { 1.43 + return this.getClass().getName() + "-" + System.currentTimeMillis(); 1.44 + } 1.45 + 1.46 + @Override 1.47 + protected void setUp() throws Exception { 1.48 + super.setUp(); 1.49 + 1.50 + File cache = getContext().getCacheDir(); 1.51 + fakeProfileDirectory = new File(cache.getAbsolutePath() + getCacheSuffix()); 1.52 + System.out.println("Test: Creating profile directory " + fakeProfileDirectory.getAbsolutePath()); 1.53 + if (!fakeProfileDirectory.mkdir()) { 1.54 + throw new IllegalStateException("Could not create temporary directory."); 1.55 + } 1.56 + 1.57 + final Context context = getContext(); 1.58 + assertNotNull(context); 1.59 + resolver = new MockContentResolver(); 1.60 + provider = providerClass.newInstance(); 1.61 + provider.attachInfo(context, null); 1.62 + assertNotNull(provider); 1.63 + resolver.addProvider(providerAuthority, getProvider()); 1.64 + } 1.65 + 1.66 + @Override 1.67 + protected void tearDown() throws Exception { 1.68 + // We don't check return values. 1.69 + System.out.println("Test: Cleaning up " + fakeProfileDirectory.getAbsolutePath()); 1.70 + for (File child : fakeProfileDirectory.listFiles()) { 1.71 + child.delete(); 1.72 + } 1.73 + fakeProfileDirectory.delete(); 1.74 + super.tearDown(); 1.75 + } 1.76 +}