| /* |
| * Copyright (C) 2010 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 com.android.exchange.provider; |
| |
| import android.content.ContentProviderOperation; |
| import android.content.ContentProviderResult; |
| import android.content.ContentUris; |
| import android.content.ContentValues; |
| import android.content.Context; |
| import android.content.OperationApplicationException; |
| import android.database.Cursor; |
| import android.net.Uri; |
| import android.os.RemoteException; |
| import android.test.ProviderTestCase2; |
| import android.test.mock.MockContentResolver; |
| import android.test.suitebuilder.annotation.SmallTest; |
| |
| import java.util.ArrayList; |
| |
| /** |
| * You can run this entire test case with: |
| * runtest -c com.android.exchange.provider.MockProviderTests exchange |
| */ |
| |
| // These tests won't run because MockProvider can't be built under the SDK |
| |
| @SmallTest |
| public class MockProviderTests extends ProviderTestCase2<MockProvider> { |
| Context mMockContext; |
| //MockContentResolver mMockResolver; |
| |
| private static final String CANHAZ_AUTHORITY = "com.android.canhaz"; |
| private static final String PONY_TABLE = "pony"; |
| private static final String PONY_COLUMN_NAME = "name"; |
| private static final String PONY_COLUMN_TYPE = "type"; |
| private static final String PONY_COLUMN_LEGS= "legs"; |
| private static final String PONY_COLUMN_CAN_RIDE = "canRide"; |
| private static final String[] PONY_PROJECTION = {MockProvider.ID_COLUMN, PONY_COLUMN_NAME, |
| PONY_COLUMN_TYPE, PONY_COLUMN_LEGS, PONY_COLUMN_CAN_RIDE}; |
| private static final int PONY_ID = 0; |
| private static final int PONY_NAME = 1; |
| private static final int PONY_TYPE = 2; |
| private static final int PONY_LEGS = 3; |
| private static final int PONY_CAN_RIDE = 4; |
| |
| public MockProviderTests() { |
| super(MockProvider.class, MockProvider.AUTHORITY); |
| } |
| |
| @Override |
| public void setUp() throws Exception { |
| super.setUp(); |
| mMockContext = getMockContext(); |
| //mMockResolver = (MockContentResolver)mMockContext.getContentResolver(); |
| //mMockResolver.addProvider(CANHAZ_AUTHORITY, new MockProvider(mMockContext)); |
| } |
| |
| @Override |
| public void tearDown() throws Exception { |
| super.tearDown(); |
| } |
| |
| private ContentValues ponyValues(String name, String type, int legs, boolean canRide) { |
| ContentValues cv = new ContentValues(); |
| cv.put(PONY_COLUMN_NAME, name); |
| cv.put(PONY_COLUMN_TYPE, type); |
| cv.put(PONY_COLUMN_LEGS, legs); |
| cv.put(PONY_COLUMN_CAN_RIDE, canRide ? 1 : 0); |
| return cv; |
| } |
| |
| // private ContentProviderResult[] setupPonies() throws RemoteException, |
| // OperationApplicationException { |
| // // The Uri is content://com.android.canhaz/pony |
| // Uri uri = new Uri.Builder().scheme("content").authority(CANHAZ_AUTHORITY) |
| // .path(PONY_TABLE).build(); |
| // // Our array of CPO's to be used with applyBatch |
| // ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); |
| // |
| // // Insert two ponies |
| // ContentValues pony1 = ponyValues("Flicka", "wayward", 4, true); |
| // ops.add(ContentProviderOperation.newInsert(uri).withValues(pony1).build()); |
| // ContentValues pony2 = ponyValues("Elise", "dastardly", 3, false); |
| // ops.add(ContentProviderOperation.newInsert(uri).withValues(pony2).build()); |
| // // Apply the batch with one insert operation |
| // return mMockResolver.applyBatch(MockProvider.AUTHORITY, ops); |
| // } |
| |
| private Uri getPonyUri() { |
| return new Uri.Builder().scheme("content").authority(CANHAZ_AUTHORITY) |
| .path(PONY_TABLE).build(); |
| } |
| |
| // public void testInsertQueryandDelete() throws RemoteException, OperationApplicationException { |
| // // The Uri is content://com.android.canhaz/pony |
| // ContentProviderResult[] results = setupPonies(); |
| // Uri uri = getPonyUri(); |
| // |
| // // Check the results |
| // assertNotNull(results); |
| // assertEquals(2, results.length); |
| // // Make sure that we've created matcher entries for pony and pony/# |
| // assertEquals(MockProvider.TABLE, MockProvider.sURIMatcher.match(MockProvider.uri(uri))); |
| // assertEquals(MockProvider.RECORD, |
| // MockProvider.sURIMatcher.match(MockProvider.uri(results[0].uri))); |
| // Cursor c = mMockResolver.query(MockProvider.uri(uri), PONY_PROJECTION, null, null, null); |
| // assertNotNull(c); |
| // assertEquals(2, c.getCount()); |
| // long eliseId = -1; |
| // long flickaId = -1; |
| // while (c.moveToNext()) { |
| // String name = c.getString(PONY_NAME); |
| // if ("Flicka".equals(name)) { |
| // assertEquals("Flicka", c.getString(PONY_NAME)); |
| // assertEquals("wayward", c.getString(PONY_TYPE)); |
| // assertEquals(4, c.getInt(PONY_LEGS)); |
| // assertEquals(1, c.getInt(PONY_CAN_RIDE)); |
| // flickaId = c.getLong(PONY_ID); |
| // } else if ("Elise".equals(name)) { |
| // assertEquals("dastardly", c.getString(PONY_TYPE)); |
| // assertEquals(3, c.getInt(PONY_LEGS)); |
| // assertEquals(0, c.getInt(PONY_CAN_RIDE)); |
| // eliseId = c.getLong(PONY_ID); |
| // } else { |
| // fail("Wrong record: " + name); |
| // } |
| // } |
| // |
| // // eliseId and flickaId should have been set |
| // assertNotSame(-1, eliseId); |
| // assertNotSame(-1, flickaId); |
| // // Delete the elise record |
| // assertEquals(1, mMockResolver.delete(ContentUris.withAppendedId(MockProvider.uri(uri), |
| // eliseId), null, null)); |
| // c = mMockResolver.query(MockProvider.uri(uri), PONY_PROJECTION, null, null, null); |
| // assertNotNull(c); |
| // // There should be one left (Flicka) |
| // assertEquals(1, c.getCount()); |
| // assertTrue(c.moveToNext()); |
| // assertEquals("Flicka", c.getString(PONY_NAME)); |
| // } |
| // |
| // public void testUpdate() throws RemoteException, OperationApplicationException { |
| // // The Uri is content://com.android.canhaz/pony |
| // Uri uri = getPonyUri(); |
| // setupPonies(); |
| // Cursor c = mMockResolver.query(MockProvider.uri(uri), PONY_PROJECTION, null, null, null); |
| // assertNotNull(c); |
| // assertEquals(2, c.getCount()); |
| // // Give all the ponies 5 legs |
| // ContentValues cv = new ContentValues(); |
| // cv.put(PONY_COLUMN_LEGS, 5); |
| // assertEquals(2, mMockResolver.update(MockProvider.uri(uri), cv, null, null)); |
| // c = mMockResolver.query(MockProvider.uri(uri), PONY_PROJECTION, null, null, null); |
| // assertNotNull(c); |
| // // We should still have two records, and each should have 5 legs, but otherwise be the same |
| // assertEquals(2, c.getCount()); |
| // long eliseId = -1; |
| // long flickaId = -1; |
| // while (c.moveToNext()) { |
| // String name = c.getString(PONY_NAME); |
| // if ("Flicka".equals(name)) { |
| // assertEquals("Flicka", c.getString(PONY_NAME)); |
| // assertEquals("wayward", c.getString(PONY_TYPE)); |
| // assertEquals(5, c.getInt(PONY_LEGS)); |
| // assertEquals(1, c.getInt(PONY_CAN_RIDE)); |
| // flickaId = c.getLong(PONY_ID); |
| // } else if ("Elise".equals(name)) { |
| // assertEquals("dastardly", c.getString(PONY_TYPE)); |
| // assertEquals(5, c.getInt(PONY_LEGS)); |
| // assertEquals(0, c.getInt(PONY_CAN_RIDE)); |
| // eliseId = c.getLong(PONY_ID); |
| // } else { |
| // fail("Wrong record: " + name); |
| // } |
| // } |
| // // eliseId and flickaId should have been set |
| // assertNotSame(-1, eliseId); |
| // assertNotSame(-1, flickaId); |
| // } |
| } |