summaryrefslogtreecommitdiffstats
path: root/test-runner/android
diff options
context:
space:
mode:
authorDaisuke Miyakawa <dmiyakawa@google.com>2009-12-04 00:53:53 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2009-12-04 00:53:53 -0800
commit8ad6ec2eb4a58a6dad34be60d49f32a53f2419f4 (patch)
tree162f049f3b4a8e541a39ec546cd9c94b85d815c1 /test-runner/android
parentcdeed7887323048cc42e9c62f3205340a91b97bc (diff)
parent8280c2b15f6875b2d387c05df23d264864eb9cd5 (diff)
downloadframeworks_base-8ad6ec2eb4a58a6dad34be60d49f32a53f2419f4.zip
frameworks_base-8ad6ec2eb4a58a6dad34be60d49f32a53f2419f4.tar.gz
frameworks_base-8ad6ec2eb4a58a6dad34be60d49f32a53f2419f4.tar.bz2
am 8280c2b1: Implement new MockContentProvider. Also make ContentProvider aware of the class.
Merge commit '8280c2b15f6875b2d387c05df23d264864eb9cd5' into eclair-mr2-plus-aosp * commit '8280c2b15f6875b2d387c05df23d264864eb9cd5': Implement new MockContentProvider. Also make ContentProvider aware of the class.
Diffstat (limited to 'test-runner/android')
-rw-r--r--test-runner/android/test/mock/MockContentProvider.java212
-rw-r--r--test-runner/android/test/mock/MockIContentProvider.java99
2 files changed, 262 insertions, 49 deletions
diff --git a/test-runner/android/test/mock/MockContentProvider.java b/test-runner/android/test/mock/MockContentProvider.java
index c3fe9c0..ca17b91 100644
--- a/test-runner/android/test/mock/MockContentProvider.java
+++ b/test-runner/android/test/mock/MockContentProvider.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,105 +16,219 @@
package android.test.mock;
+import android.content.ContentProvider;
+import android.content.ContentProviderOperation;
+import android.content.ContentProviderResult;
import android.content.ContentValues;
-import android.content.IContentProvider;
-import android.content.Entity;
+import android.content.Context;
import android.content.EntityIterator;
-import android.content.ContentProviderResult;
-import android.content.ContentProviderOperation;
+import android.content.IContentProvider;
import android.content.OperationApplicationException;
+import android.content.pm.PathPermission;
+import android.content.pm.ProviderInfo;
import android.content.res.AssetFileDescriptor;
import android.database.Cursor;
import android.database.CursorWindow;
import android.database.IBulkCursor;
import android.database.IContentObserver;
import android.net.Uri;
-import android.os.RemoteException;
import android.os.IBinder;
import android.os.ParcelFileDescriptor;
+import android.os.RemoteException;
import java.io.FileNotFoundException;
import java.util.ArrayList;
/**
- * Mock implementation of IContentProvider that does nothing. All methods are non-functional and
- * throw {@link java.lang.UnsupportedOperationException}. Tests can extend this class to
+ * Mock implementation of ContentProvider. All methods are non-functional and throw
+ * {@link java.lang.UnsupportedOperationException}. Tests can extend this class to
* implement behavior needed for tests.
- *
- * @hide - Because IContentProvider hides bulkQuery(), this doesn't pass through JavaDoc
- * without generating errors.
- *
*/
-public class MockContentProvider implements IContentProvider {
+public class MockContentProvider extends ContentProvider {
+ /*
+ * Note: if you add methods to ContentProvider, you must add similar methods to
+ * MockContentProvider.
+ */
+
+ /**
+ * IContentProvider that directs all calls to this MockContentProvider.
+ */
+ private class InversionIContentProvider implements IContentProvider {
+ @SuppressWarnings("unused")
+ public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations)
+ throws RemoteException, OperationApplicationException {
+ return MockContentProvider.this.applyBatch(operations);
+ }
+
+ @SuppressWarnings("unused")
+ public int bulkInsert(Uri url, ContentValues[] initialValues) throws RemoteException {
+ return MockContentProvider.this.bulkInsert(url, initialValues);
+ }
+
+ @SuppressWarnings("unused")
+ public IBulkCursor bulkQuery(Uri url, String[] projection, String selection,
+ String[] selectionArgs, String sortOrder, IContentObserver observer,
+ CursorWindow window) throws RemoteException {
+ throw new UnsupportedOperationException("Must not come here");
+ }
+
+ @SuppressWarnings("unused")
+ public int delete(Uri url, String selection, String[] selectionArgs)
+ throws RemoteException {
+ return MockContentProvider.this.delete(url, selection, selectionArgs);
+ }
+
+ @SuppressWarnings("unused")
+ public String getType(Uri url) throws RemoteException {
+ return MockContentProvider.this.getType(url);
+ }
+
+ @SuppressWarnings("unused")
+ public Uri insert(Uri url, ContentValues initialValues) throws RemoteException {
+ return MockContentProvider.this.insert(url, initialValues);
+ }
+
+ @SuppressWarnings("unused")
+ public AssetFileDescriptor openAssetFile(Uri url, String mode) throws RemoteException,
+ FileNotFoundException {
+ return MockContentProvider.this.openAssetFile(url, mode);
+ }
+
+ @SuppressWarnings("unused")
+ public ParcelFileDescriptor openFile(Uri url, String mode) throws RemoteException,
+ FileNotFoundException {
+ return MockContentProvider.this.openFile(url, mode);
+ }
+
+ @SuppressWarnings("unused")
+ public Cursor query(Uri url, String[] projection, String selection, String[] selectionArgs,
+ String sortOrder) throws RemoteException {
+ return MockContentProvider.this.query(url, projection, selection,
+ selectionArgs, sortOrder);
+ }
+
+ @SuppressWarnings("unused")
+ public EntityIterator queryEntities(Uri url, String selection, String[] selectionArgs,
+ String sortOrder) throws RemoteException {
+ return MockContentProvider.this.queryEntities(
+ url, selection, selectionArgs, sortOrder);
+ }
+
+ @SuppressWarnings("unused")
+ public int update(Uri url, ContentValues values, String selection, String[] selectionArgs)
+ throws RemoteException {
+ return MockContentProvider.this.update(url, values, selection, selectionArgs);
+ }
+
+ public IBinder asBinder() {
+ throw new UnsupportedOperationException();
+ }
- @SuppressWarnings("unused")
- public int bulkInsert(Uri url, ContentValues[] initialValues) throws RemoteException {
- // TODO Auto-generated method stub
- return 0;
}
+ private final InversionIContentProvider mIContentProvider = new InversionIContentProvider();
- @SuppressWarnings("unused")
- public IBulkCursor bulkQuery(Uri url, String[] projection, String selection,
- String[] selectionArgs, String sortOrder, IContentObserver observer,
- CursorWindow window) throws RemoteException {
- throw new UnsupportedOperationException("unimplemented mock method");
+ /**
+ * A constructor using {@link MockContext} instance as a Context in it.
+ */
+ protected MockContentProvider() {
+ super(new MockContext(), "", "", null);
}
- @SuppressWarnings("unused")
- public int delete(Uri url, String selection, String[] selectionArgs)
- throws RemoteException {
- throw new UnsupportedOperationException("unimplemented mock method");
+ /**
+ * A constructor accepting a Context instance, which is supposed to be the subclasss of
+ * {@link MockContext}.
+ */
+ public MockContentProvider(Context context) {
+ super(context, "", "", null);
}
- @SuppressWarnings("unused")
- public String getType(Uri url) throws RemoteException {
+ /**
+ * A constructor which initialize four member variables which
+ * {@link android.content.ContentProvider} have internally.
+ *
+ * @param context A Context object which should be some mock instance (like the
+ * instance of {@link android.test.mock.MockContext}).
+ * @param readPermission The read permision you want this instance should have in the
+ * test, which is available via {@link #getReadPermission()}.
+ * @param writePermission The write permission you want this instance should have
+ * in the test, which is available via {@link #getWritePermission()}.
+ * @param pathPermissions The PathPermissions you want this instance should have
+ * in the test, which is available via {@link #getPathPermissions()}.
+ */
+ public MockContentProvider(Context context,
+ String readPermission,
+ String writePermission,
+ PathPermission[] pathPermissions) {
+ super(context, readPermission, writePermission, pathPermissions);
+ }
+
+ @Override
+ public int delete(Uri uri, String selection, String[] selectionArgs) {
throw new UnsupportedOperationException("unimplemented mock method");
}
- @SuppressWarnings("unused")
- public Uri insert(Uri url, ContentValues initialValues) throws RemoteException {
+ @Override
+ public String getType(Uri uri) {
throw new UnsupportedOperationException("unimplemented mock method");
}
- @SuppressWarnings("unused")
- public ParcelFileDescriptor openFile(Uri url, String mode) throws RemoteException,
- FileNotFoundException {
+ @Override
+ public Uri insert(Uri uri, ContentValues values) {
throw new UnsupportedOperationException("unimplemented mock method");
}
- @SuppressWarnings("unused")
- public AssetFileDescriptor openAssetFile(Uri uri, String mode)
- throws FileNotFoundException {
+ @Override
+ public boolean onCreate() {
throw new UnsupportedOperationException("unimplemented mock method");
}
- public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations)
- throws RemoteException, OperationApplicationException {
+ @Override
+ public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
+ String sortOrder) {
throw new UnsupportedOperationException("unimplemented mock method");
}
- @SuppressWarnings("unused")
- public Cursor query(Uri url, String[] projection, String selection, String[] selectionArgs,
- String sortOrder) throws RemoteException {
+ @Override
+ public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
throw new UnsupportedOperationException("unimplemented mock method");
}
/**
- * @hide
+ * If you're reluctant to implement this manually, please just call super.bulkInsert().
*/
- public EntityIterator queryEntities(Uri url, String selection, String[] selectionArgs,
- String sortOrder) throws RemoteException {
+ @Override
+ public int bulkInsert(Uri uri, ContentValues[] values) {
throw new UnsupportedOperationException("unimplemented mock method");
}
- @SuppressWarnings("unused")
- public int update(Uri url, ContentValues values, String selection, String[] selectionArgs)
- throws RemoteException {
+ @Override
+ public void attachInfo(Context context, ProviderInfo info) {
throw new UnsupportedOperationException("unimplemented mock method");
}
- public IBinder asBinder() {
+ @Override
+ public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations) {
throw new UnsupportedOperationException("unimplemented mock method");
}
-}
+ /**
+ * Returns IContentProvider which calls back same methods in this class.
+ * By overriding this class, we avoid the mechanism hidden behind ContentProvider
+ * (IPC, etc.)
+ *
+ * @hide
+ */
+ @Override
+ public final IContentProvider getIContentProvider() {
+ return mIContentProvider;
+ }
+
+ /**
+ * @hide
+ */
+ @Override
+ public EntityIterator queryEntities(Uri uri, String selection, String[] selectionArgs,
+ String sortOrder) {
+ throw new UnsupportedOperationException("unimplemented mock method");
+ }
+} \ No newline at end of file
diff --git a/test-runner/android/test/mock/MockIContentProvider.java b/test-runner/android/test/mock/MockIContentProvider.java
new file mode 100644
index 0000000..7c0a1e2
--- /dev/null
+++ b/test-runner/android/test/mock/MockIContentProvider.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.test.mock;
+
+import android.content.ContentProviderOperation;
+import android.content.ContentProviderResult;
+import android.content.ContentValues;
+import android.content.EntityIterator;
+import android.content.IContentProvider;
+import android.content.res.AssetFileDescriptor;
+import android.database.Cursor;
+import android.database.CursorWindow;
+import android.database.IBulkCursor;
+import android.database.IContentObserver;
+import android.net.Uri;
+import android.os.IBinder;
+import android.os.ParcelFileDescriptor;
+import android.os.RemoteException;
+
+import java.util.ArrayList;
+
+/**
+ * Mock implementation of IContentProvider. All methods are non-functional and throw
+ * {@link java.lang.UnsupportedOperationException}. Tests can extend this class to
+ * implement behavior needed for tests.
+ *
+ * @hide - @hide because this exposes bulkQuery(), which must also be hidden.
+ */
+public class MockIContentProvider implements IContentProvider {
+ public int bulkInsert(Uri url, ContentValues[] initialValues) {
+ throw new UnsupportedOperationException("unimplemented mock method");
+ }
+
+ public IBulkCursor bulkQuery(Uri url, String[] projection, String selection,
+ String[] selectionArgs, String sortOrder, IContentObserver observer,
+ CursorWindow window) {
+ throw new UnsupportedOperationException("unimplemented mock method");
+ }
+
+ @SuppressWarnings("unused")
+ public int delete(Uri url, String selection, String[] selectionArgs)
+ throws RemoteException {
+ throw new UnsupportedOperationException("unimplemented mock method");
+ }
+
+ public String getType(Uri url) {
+ throw new UnsupportedOperationException("unimplemented mock method");
+ }
+
+ @SuppressWarnings("unused")
+ public Uri insert(Uri url, ContentValues initialValues) throws RemoteException {
+ throw new UnsupportedOperationException("unimplemented mock method");
+ }
+
+ public ParcelFileDescriptor openFile(Uri url, String mode) {
+ throw new UnsupportedOperationException("unimplemented mock method");
+ }
+
+ public AssetFileDescriptor openAssetFile(Uri uri, String mode) {
+ throw new UnsupportedOperationException("unimplemented mock method");
+ }
+
+ public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations) {
+ throw new UnsupportedOperationException("unimplemented mock method");
+ }
+
+ public Cursor query(Uri url, String[] projection, String selection, String[] selectionArgs,
+ String sortOrder) {
+ throw new UnsupportedOperationException("unimplemented mock method");
+ }
+
+ public EntityIterator queryEntities(Uri url, String selection, String[] selectionArgs,
+ String sortOrder) {
+ throw new UnsupportedOperationException("unimplemented mock method");
+ }
+
+ public int update(Uri url, ContentValues values, String selection, String[] selectionArgs)
+ throws RemoteException {
+ throw new UnsupportedOperationException("unimplemented mock method");
+ }
+
+ public IBinder asBinder() {
+ throw new UnsupportedOperationException("unimplemented mock method");
+ }
+}