blob: 4108f34fa0d442d1d3a63741c618c6584506270c [file] [log] [blame]
Kenny Root10362ab2010-03-12 11:13:50 -08001/*
2 * Copyright (C) 2007 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080017package android.test;
18
19import android.content.ContentProvider;
20import android.content.ContentResolver;
21import android.content.Context;
22import android.test.mock.MockContext;
23import android.test.mock.MockContentResolver;
24import android.database.DatabaseUtils;
25
26/**
27 * If you would like to test a single content provider with an
28 * {@link InstrumentationTestCase}, this provides some of the boiler plate in {@link #setUp} and
29 * {@link #tearDown}.
30 *
31 * @deprecated this class extends InstrumentationTestCase but should extend AndroidTestCase. Use
32 * ProviderTestCase2, which corrects this problem, instead.
33 */
Dianne Hackborn4a51c202009-08-21 15:14:02 -070034@Deprecated
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080035public abstract class ProviderTestCase<T extends ContentProvider>
36 extends InstrumentationTestCase {
37
38 Class<T> mProviderClass;
39 String mProviderAuthority;
40
41 private IsolatedContext mProviderContext;
42 private MockContentResolver mResolver;
43
44 public ProviderTestCase(Class<T> providerClass, String providerAuthority) {
45 mProviderClass = providerClass;
46 mProviderAuthority = providerAuthority;
47 }
48
49 /**
50 * The content provider that will be set up for use in each test method.
51 */
52 private T mProvider;
53
54 public T getProvider() {
55 return mProvider;
56 }
57
58 @Override
59 protected void setUp() throws Exception {
60 super.setUp();
61
62 mResolver = new MockContentResolver();
63 final String filenamePrefix = "test.";
64 RenamingDelegatingContext targetContextWrapper = new RenamingDelegatingContext(
65 new MockContext(), // The context that most methods are delegated to
66 getInstrumentation().getTargetContext(), // The context that file methods are delegated to
67 filenamePrefix);
68 mProviderContext = new IsolatedContext(mResolver, targetContextWrapper);
69
Akos Ludanyi9189c4c2014-09-04 14:08:49 +020070 mProvider = ProviderTestCase2.createProviderForTest(
71 mProviderContext, mProviderClass, mProviderAuthority);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080072 mResolver.addProvider(mProviderAuthority, getProvider());
73 }
74
Vasu Nori0c9e14a2010-08-04 13:31:48 -070075 /**
76 * Tears down the environment for the test fixture.
77 * <p>
78 * Calls {@link android.content.ContentProvider#shutdown()} on the
Vasu Norib6d14372010-08-04 18:05:00 -070079 * {@link android.content.ContentProvider} represented by mProvider.
Vasu Nori0c9e14a2010-08-04 13:31:48 -070080 */
81 @Override
82 protected void tearDown() throws Exception {
83 mProvider.shutdown();
84 super.tearDown();
85 }
86
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080087 public MockContentResolver getMockContentResolver() {
88 return mResolver;
89 }
90
91 public IsolatedContext getMockContext() {
92 return mProviderContext;
93 }
94
95 public static <T extends ContentProvider> ContentResolver newResolverWithContentProviderFromSql(
96 Context targetContext, Class<T> providerClass, String authority,
97 String databaseName, int databaseVersion, String sql)
98 throws IllegalAccessException, InstantiationException {
99 final String filenamePrefix = "test.";
100 MockContentResolver resolver = new MockContentResolver();
101 RenamingDelegatingContext targetContextWrapper = new RenamingDelegatingContext(
102 new MockContext(), // The context that most methods are delegated to
103 targetContext, // The context that file methods are delegated to
104 filenamePrefix);
105 Context context = new IsolatedContext(
106 resolver, targetContextWrapper);
107 DatabaseUtils.createDbFromSqlStatements(context, databaseName, databaseVersion, sql);
108
Akos Ludanyi9189c4c2014-09-04 14:08:49 +0200109 T provider = ProviderTestCase2.createProviderForTest(context, providerClass, authority);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800110 resolver.addProvider(authority, provider);
111
112 return resolver;
113 }
114}