mobile/android/tests/background/junit3/src/helpers/DBProviderTestCase.java

branch
TOR_BUG_3246
changeset 4
fc2d59ddac77
equal deleted inserted replaced
-1:000000000000 0:45d77b4aec8d
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 package org.mozilla.gecko.background.helpers;
5
6 import java.io.File;
7
8 import android.content.ContentProvider;
9 import android.content.Context;
10 import android.test.AndroidTestCase;
11 import android.test.mock.MockContentResolver;
12
13 /**
14 * Because ProviderTestCase2 is unable to handle custom DB paths.
15 */
16 public abstract class DBProviderTestCase<T extends ContentProvider> extends
17 AndroidTestCase {
18
19 Class<T> providerClass;
20 String providerAuthority;
21
22 protected File fakeProfileDirectory;
23 private MockContentResolver resolver;
24 private T provider;
25
26 public DBProviderTestCase(Class<T> providerClass, String providerAuthority) {
27 this.providerClass = providerClass;
28 this.providerAuthority = providerAuthority;
29 }
30
31 public T getProvider() {
32 return provider;
33 }
34
35 public MockContentResolver getMockContentResolver() {
36 return resolver;
37 }
38
39 protected String getCacheSuffix() {
40 return this.getClass().getName() + "-" + System.currentTimeMillis();
41 }
42
43 @Override
44 protected void setUp() throws Exception {
45 super.setUp();
46
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 }
53
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 }
62
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 }

mercurial