Home | History | Annotate | Download | only in provider
      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