1 /* 2 * Copyright (C) 2010 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 17 package com.android.exchange.provider; 18 19 import android.content.ContentProviderOperation; 20 import android.content.ContentProviderResult; 21 import android.content.ContentUris; 22 import android.content.ContentValues; 23 import android.content.Context; 24 import android.content.OperationApplicationException; 25 import android.database.Cursor; 26 import android.net.Uri; 27 import android.os.RemoteException; 28 import android.test.ProviderTestCase2; 29 import android.test.mock.MockContentResolver; 30 import android.test.suitebuilder.annotation.SmallTest; 31 32 import java.util.ArrayList; 33 34 /** 35 * You can run this entire test case with: 36 * runtest -c com.android.exchange.provider.MockProviderTests exchange 37 */ 38 39 // These tests won't run because MockProvider can't be built under the SDK 40 41 @SmallTest 42 public class MockProviderTests extends ProviderTestCase2<MockProvider> { 43 Context mMockContext; 44 //MockContentResolver mMockResolver; 45 46 private static final String CANHAZ_AUTHORITY = "com.android.canhaz"; 47 private static final String PONY_TABLE = "pony"; 48 private static final String PONY_COLUMN_NAME = "name"; 49 private static final String PONY_COLUMN_TYPE = "type"; 50 private static final String PONY_COLUMN_LEGS= "legs"; 51 private static final String PONY_COLUMN_CAN_RIDE = "canRide"; 52 private static final String[] PONY_PROJECTION = {MockProvider.ID_COLUMN, PONY_COLUMN_NAME, 53 PONY_COLUMN_TYPE, PONY_COLUMN_LEGS, PONY_COLUMN_CAN_RIDE}; 54 private static final int PONY_ID = 0; 55 private static final int PONY_NAME = 1; 56 private static final int PONY_TYPE = 2; 57 private static final int PONY_LEGS = 3; 58 private static final int PONY_CAN_RIDE = 4; 59 60 public MockProviderTests() { 61 super(MockProvider.class, MockProvider.AUTHORITY); 62 } 63 64 @Override 65 public void setUp() throws Exception { 66 super.setUp(); 67 mMockContext = getMockContext(); 68 //mMockResolver = (MockContentResolver)mMockContext.getContentResolver(); 69 //mMockResolver.addProvider(CANHAZ_AUTHORITY, new MockProvider(mMockContext)); 70 } 71 72 @Override 73 public void tearDown() throws Exception { 74 super.tearDown(); 75 } 76 77 private ContentValues ponyValues(String name, String type, int legs, boolean canRide) { 78 ContentValues cv = new ContentValues(); 79 cv.put(PONY_COLUMN_NAME, name); 80 cv.put(PONY_COLUMN_TYPE, type); 81 cv.put(PONY_COLUMN_LEGS, legs); 82 cv.put(PONY_COLUMN_CAN_RIDE, canRide ? 1 : 0); 83 return cv; 84 } 85 86 // private ContentProviderResult[] setupPonies() throws RemoteException, 87 // OperationApplicationException { 88 // // The Uri is content://com.android.canhaz/pony 89 // Uri uri = new Uri.Builder().scheme("content").authority(CANHAZ_AUTHORITY) 90 // .path(PONY_TABLE).build(); 91 // // Our array of CPO's to be used with applyBatch 92 // ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 93 // 94 // // Insert two ponies 95 // ContentValues pony1 = ponyValues("Flicka", "wayward", 4, true); 96 // ops.add(ContentProviderOperation.newInsert(uri).withValues(pony1).build()); 97 // ContentValues pony2 = ponyValues("Elise", "dastardly", 3, false); 98 // ops.add(ContentProviderOperation.newInsert(uri).withValues(pony2).build()); 99 // // Apply the batch with one insert operation 100 // return mMockResolver.applyBatch(MockProvider.AUTHORITY, ops); 101 // } 102 103 private Uri getPonyUri() { 104 return new Uri.Builder().scheme("content").authority(CANHAZ_AUTHORITY) 105 .path(PONY_TABLE).build(); 106 } 107 108 // public void testInsertQueryandDelete() throws RemoteException, OperationApplicationException { 109 // // The Uri is content://com.android.canhaz/pony 110 // ContentProviderResult[] results = setupPonies(); 111 // Uri uri = getPonyUri(); 112 // 113 // // Check the results 114 // assertNotNull(results); 115 // assertEquals(2, results.length); 116 // // Make sure that we've created matcher entries for pony and pony/# 117 // assertEquals(MockProvider.TABLE, MockProvider.sURIMatcher.match(MockProvider.uri(uri))); 118 // assertEquals(MockProvider.RECORD, 119 // MockProvider.sURIMatcher.match(MockProvider.uri(results[0].uri))); 120 // Cursor c = mMockResolver.query(MockProvider.uri(uri), PONY_PROJECTION, null, null, null); 121 // assertNotNull(c); 122 // assertEquals(2, c.getCount()); 123 // long eliseId = -1; 124 // long flickaId = -1; 125 // while (c.moveToNext()) { 126 // String name = c.getString(PONY_NAME); 127 // if ("Flicka".equals(name)) { 128 // assertEquals("Flicka", c.getString(PONY_NAME)); 129 // assertEquals("wayward", c.getString(PONY_TYPE)); 130 // assertEquals(4, c.getInt(PONY_LEGS)); 131 // assertEquals(1, c.getInt(PONY_CAN_RIDE)); 132 // flickaId = c.getLong(PONY_ID); 133 // } else if ("Elise".equals(name)) { 134 // assertEquals("dastardly", c.getString(PONY_TYPE)); 135 // assertEquals(3, c.getInt(PONY_LEGS)); 136 // assertEquals(0, c.getInt(PONY_CAN_RIDE)); 137 // eliseId = c.getLong(PONY_ID); 138 // } else { 139 // fail("Wrong record: " + name); 140 // } 141 // } 142 // 143 // // eliseId and flickaId should have been set 144 // assertNotSame(-1, eliseId); 145 // assertNotSame(-1, flickaId); 146 // // Delete the elise record 147 // assertEquals(1, mMockResolver.delete(ContentUris.withAppendedId(MockProvider.uri(uri), 148 // eliseId), null, null)); 149 // c = mMockResolver.query(MockProvider.uri(uri), PONY_PROJECTION, null, null, null); 150 // assertNotNull(c); 151 // // There should be one left (Flicka) 152 // assertEquals(1, c.getCount()); 153 // assertTrue(c.moveToNext()); 154 // assertEquals("Flicka", c.getString(PONY_NAME)); 155 // } 156 // 157 // public void testUpdate() throws RemoteException, OperationApplicationException { 158 // // The Uri is content://com.android.canhaz/pony 159 // Uri uri = getPonyUri(); 160 // setupPonies(); 161 // Cursor c = mMockResolver.query(MockProvider.uri(uri), PONY_PROJECTION, null, null, null); 162 // assertNotNull(c); 163 // assertEquals(2, c.getCount()); 164 // // Give all the ponies 5 legs 165 // ContentValues cv = new ContentValues(); 166 // cv.put(PONY_COLUMN_LEGS, 5); 167 // assertEquals(2, mMockResolver.update(MockProvider.uri(uri), cv, null, null)); 168 // c = mMockResolver.query(MockProvider.uri(uri), PONY_PROJECTION, null, null, null); 169 // assertNotNull(c); 170 // // We should still have two records, and each should have 5 legs, but otherwise be the same 171 // assertEquals(2, c.getCount()); 172 // long eliseId = -1; 173 // long flickaId = -1; 174 // while (c.moveToNext()) { 175 // String name = c.getString(PONY_NAME); 176 // if ("Flicka".equals(name)) { 177 // assertEquals("Flicka", c.getString(PONY_NAME)); 178 // assertEquals("wayward", c.getString(PONY_TYPE)); 179 // assertEquals(5, c.getInt(PONY_LEGS)); 180 // assertEquals(1, c.getInt(PONY_CAN_RIDE)); 181 // flickaId = c.getLong(PONY_ID); 182 // } else if ("Elise".equals(name)) { 183 // assertEquals("dastardly", c.getString(PONY_TYPE)); 184 // assertEquals(5, c.getInt(PONY_LEGS)); 185 // assertEquals(0, c.getInt(PONY_CAN_RIDE)); 186 // eliseId = c.getLong(PONY_ID); 187 // } else { 188 // fail("Wrong record: " + name); 189 // } 190 // } 191 // // eliseId and flickaId should have been set 192 // assertNotSame(-1, eliseId); 193 // assertNotSame(-1, flickaId); 194 // } 195 } 196