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