diff options
author | Daisuke Miyakawa <dmiyakawa@google.com> | 2009-12-04 00:53:53 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2009-12-04 00:53:53 -0800 |
commit | 8ad6ec2eb4a58a6dad34be60d49f32a53f2419f4 (patch) | |
tree | 162f049f3b4a8e541a39ec546cd9c94b85d815c1 /test-runner/android | |
parent | cdeed7887323048cc42e9c62f3205340a91b97bc (diff) | |
parent | 8280c2b15f6875b2d387c05df23d264864eb9cd5 (diff) | |
download | frameworks_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.java | 212 | ||||
-rw-r--r-- | test-runner/android/test/mock/MockIContentProvider.java | 99 |
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"); + } +} |