Wed, 31 Dec 2014 07:22:50 +0100
Correct previous dual key logic pending first delivery installment.
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
4 package org.mozilla.gecko.background.helpers;
6 import java.io.File;
8 import android.content.ContentProvider;
9 import android.content.Context;
10 import android.test.AndroidTestCase;
11 import android.test.mock.MockContentResolver;
13 /**
14 * Because ProviderTestCase2 is unable to handle custom DB paths.
15 */
16 public abstract class DBProviderTestCase<T extends ContentProvider> extends
17 AndroidTestCase {
19 Class<T> providerClass;
20 String providerAuthority;
22 protected File fakeProfileDirectory;
23 private MockContentResolver resolver;
24 private T provider;
26 public DBProviderTestCase(Class<T> providerClass, String providerAuthority) {
27 this.providerClass = providerClass;
28 this.providerAuthority = providerAuthority;
29 }
31 public T getProvider() {
32 return provider;
33 }
35 public MockContentResolver getMockContentResolver() {
36 return resolver;
37 }
39 protected String getCacheSuffix() {
40 return this.getClass().getName() + "-" + System.currentTimeMillis();
41 }
43 @Override
44 protected void setUp() throws Exception {
45 super.setUp();
47 File cache = getContext().getCacheDir();
48 fakeProfileDirectory = new File(cache.getAbsolutePath() + getCacheSuffix());
49 System.out.println("Test: Creating profile directory " + fakeProfileDirectory.getAbsolutePath());
50 if (!fakeProfileDirectory.mkdir()) {
51 throw new IllegalStateException("Could not create temporary directory.");
52 }
54 final Context context = getContext();
55 assertNotNull(context);
56 resolver = new MockContentResolver();
57 provider = providerClass.newInstance();
58 provider.attachInfo(context, null);
59 assertNotNull(provider);
60 resolver.addProvider(providerAuthority, getProvider());
61 }
63 @Override
64 protected void tearDown() throws Exception {
65 // We don't check return values.
66 System.out.println("Test: Cleaning up " + fakeProfileDirectory.getAbsolutePath());
67 for (File child : fakeProfileDirectory.listFiles()) {
68 child.delete();
69 }
70 fakeProfileDirectory.delete();
71 super.tearDown();
72 }
73 }