Home | History | Annotate | Download | only in contacts
      1 /*
      2  * Copyright (C) 2016 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.providers.contacts;
     18 
     19 import android.database.Cursor;
     20 import android.database.MatrixCursor;
     21 import android.provider.ContactsContract.PhoneLookup;
     22 import android.test.AndroidTestCase;
     23 import android.test.MoreAsserts;
     24 import android.test.suitebuilder.annotation.SmallTest;
     25 
     26 import com.android.providers.contacts.enterprise.EnterpriseContactsCursorWrapper;
     27 
     28 
     29 @SmallTest
     30 public class EnterpriseContactsCursorWrapperTest extends AndroidTestCase {
     31 
     32     public void testWrappedResults() {
     33         final String[] projection = new String[] {
     34                 /* column 0 */ PhoneLookup._ID,
     35                 /* column 1 */ PhoneLookup.CONTACT_ID,
     36                 /* column 2 */ PhoneLookup.LOOKUP_KEY,
     37                 /* column 3 */ PhoneLookup.DISPLAY_NAME,
     38                 /* column 4 */ PhoneLookup.LAST_TIME_CONTACTED,
     39                 /* column 5 */ PhoneLookup.TIMES_CONTACTED,
     40                 /* column 6 */ PhoneLookup.STARRED,
     41                 /* column 7 */ PhoneLookup.IN_DEFAULT_DIRECTORY,
     42                 /* column 8 */ PhoneLookup.IN_VISIBLE_GROUP,
     43                 /* column 9 */ PhoneLookup.PHOTO_FILE_ID,
     44                 /* column 10 */ PhoneLookup.PHOTO_ID,
     45                 /* column 11 */ PhoneLookup.PHOTO_URI,
     46                 /* column 12 */ PhoneLookup.PHOTO_THUMBNAIL_URI,
     47                 /* column 13 */ PhoneLookup.CUSTOM_RINGTONE,
     48                 /* column 14 */ PhoneLookup.HAS_PHONE_NUMBER,
     49                 /* column 15 */ PhoneLookup.SEND_TO_VOICEMAIL,
     50                 /* column 16 */ PhoneLookup.NUMBER,
     51                 /* column 17 */ PhoneLookup.TYPE,
     52                 /* column 18 */ PhoneLookup.LABEL,
     53                 /* column 19 */ PhoneLookup.NORMALIZED_NUMBER
     54         };
     55         final MatrixCursor c = new MatrixCursor(projection);
     56 
     57         // First, convert and make sure it returns an empty cursor.
     58         Cursor rewritten = new EnterpriseContactsCursorWrapper(c, projection,
     59                 new int[] {0, 1}, null);
     60 
     61         assertEquals(0, rewritten.getCount());
     62         assertEquals(projection.length, rewritten.getColumnCount());
     63 
     64         c.addRow(new Object[] {
     65                 1L, // PhoneLookup._ID,
     66                 1L, // PhoneLookup.CONTACT_ID,
     67                 null, // PhoneLookup.LOOKUP_KEY,
     68                 null, // PhoneLookup.DISPLAY_NAME,
     69                 null, // PhoneLookup.LAST_TIME_CONTACTED,
     70                 null, // PhoneLookup.TIMES_CONTACTED,
     71                 null, // PhoneLookup.STARRED,
     72                 null, // PhoneLookup.IN_DEFAULT_DIRECTORY,
     73                 null, // PhoneLookup.IN_VISIBLE_GROUP,
     74                 null, // PhoneLookup.PHOTO_FILE_ID,
     75                 null, // PhoneLookup.PHOTO_ID,
     76                 null, // PhoneLookup.PHOTO_URI,
     77                 null, // PhoneLookup.PHOTO_THUMBNAIL_URI,
     78                 null, // PhoneLookup.CUSTOM_RINGTONE,
     79                 null, // PhoneLookup.HAS_PHONE_NUMBER,
     80                 null, // PhoneLookup.SEND_TO_VOICEMAIL,
     81                 null, // PhoneLookup.NUMBER,
     82                 null, // PhoneLookup.TYPE,
     83                 null, // PhoneLookup.LABEL,
     84                 null, // PhoneLookup.NORMALIZED_NUMBER
     85         });
     86 
     87         c.addRow(new Object[] {
     88                 10L, // PhoneLookup._ID,
     89                 10L, // PhoneLookup.CONTACT_ID,
     90                 "key", // PhoneLookup.LOOKUP_KEY,
     91                 "name", // PhoneLookup.DISPLAY_NAME,
     92                 123, // PhoneLookup.LAST_TIME_CONTACTED,
     93                 456, // PhoneLookup.TIMES_CONTACTED,
     94                 1, // PhoneLookup.STARRED,
     95                 1, // PhoneLookup.IN_DEFAULT_DIRECTORY,
     96                 1, // PhoneLookup.IN_VISIBLE_GROUP,
     97                 1001, // PhoneLookup.PHOTO_FILE_ID,
     98                 1002, // PhoneLookup.PHOTO_ID,
     99                 "content://a/a", // PhoneLookup.PHOTO_URI,
    100                 "content://a/b", // PhoneLookup.PHOTO_THUMBNAIL_URI,
    101                 "content://a/c", // PhoneLookup.CUSTOM_RINGTONE,
    102                 1, // PhoneLookup.HAS_PHONE_NUMBER,
    103                 1, // PhoneLookup.SEND_TO_VOICEMAIL,
    104                 "1234", // PhoneLookup.NUMBER,
    105                 1, // PhoneLookup.TYPE,
    106                 "label", // PhoneLookup.LABEL,
    107                 "+1234", // PhoneLookup.NORMALIZED_NUMBER
    108         });
    109 
    110         c.addRow(new Object[] {
    111                 11L, // PhoneLookup._ID,
    112                 11L, // PhoneLookup.CONTACT_ID,
    113                 null, // PhoneLookup.LOOKUP_KEY,
    114                 null, // PhoneLookup.DISPLAY_NAME,
    115                 null, // PhoneLookup.LAST_TIME_CONTACTED,
    116                 null, // PhoneLookup.TIMES_CONTACTED,
    117                 null, // PhoneLookup.STARRED,
    118                 null, // PhoneLookup.IN_DEFAULT_DIRECTORY,
    119                 null, // PhoneLookup.IN_VISIBLE_GROUP,
    120                 null, // PhoneLookup.PHOTO_FILE_ID,
    121                 null, // PhoneLookup.PHOTO_ID,
    122                 "content://com.android.contacts/contacts/11/display_photo", // PhoneLookup.PHOTO_URI,
    123                 "content://com.android.contacts/contacts/11/photo", // PhoneLookup.PHOTO_THUMBNAIL_URI,
    124                 null, // PhoneLookup.CUSTOM_RINGTONE,
    125                 null, // PhoneLookup.HAS_PHONE_NUMBER,
    126                 null, // PhoneLookup.SEND_TO_VOICEMAIL,
    127                 null, // PhoneLookup.NUMBER,
    128                 null, // PhoneLookup.TYPE,
    129                 null, // PhoneLookup.LABEL,
    130                 null, // PhoneLookup.NORMALIZED_NUMBER
    131         });
    132 
    133         c.addRow(new Object[] {
    134                 12L, // PhoneLookup._ID,
    135                 12L, // PhoneLookup.CONTACT_ID,
    136                 null, // PhoneLookup.LOOKUP_KEY,
    137                 null, // PhoneLookup.DISPLAY_NAME,
    138                 null, // PhoneLookup.LAST_TIME_CONTACTED,
    139                 null, // PhoneLookup.TIMES_CONTACTED,
    140                 null, // PhoneLookup.STARRED,
    141                 null, // PhoneLookup.IN_DEFAULT_DIRECTORY,
    142                 null, // PhoneLookup.IN_VISIBLE_GROUP,
    143                 null, // PhoneLookup.PHOTO_FILE_ID,
    144                 null, // PhoneLookup.PHOTO_ID,
    145                 "content://com.android.contacts/contacts/12/photo", // PhoneLookup.PHOTO_URI,
    146                 "content://com.android.contacts/contacts/12/photo", // PhoneLookup.PHOTO_THUMBNAIL_URI,
    147                 null, // PhoneLookup.CUSTOM_RINGTONE,
    148                 null, // PhoneLookup.HAS_PHONE_NUMBER,
    149                 null, // PhoneLookup.SEND_TO_VOICEMAIL,
    150                 null, // PhoneLookup.NUMBER,
    151                 null, // PhoneLookup.TYPE,
    152                 null, // PhoneLookup.LABEL,
    153                 null, // PhoneLookup.NORMALIZED_NUMBER
    154         });
    155 
    156         c.addRow(new Object[] {
    157                 13L, // PhoneLookup._ID,
    158                 13L, // PhoneLookup.CONTACT_ID,
    159                 null, // PhoneLookup.LOOKUP_KEY,
    160                 null, // PhoneLookup.DISPLAY_NAME,
    161                 null, // PhoneLookup.LAST_TIME_CONTACTED,
    162                 null, // PhoneLookup.TIMES_CONTACTED,
    163                 null, // PhoneLookup.STARRED,
    164                 null, // PhoneLookup.IN_DEFAULT_DIRECTORY,
    165                 null, // PhoneLookup.IN_VISIBLE_GROUP,
    166                 123L, // PhoneLookup.PHOTO_FILE_ID,
    167                 null, // PhoneLookup.PHOTO_ID,
    168                 "content://com.android.contacts/display_photo/123", // PhoneLookup.PHOTO_URI,
    169                 "content://com.android.contacts/contacts/13/photo", // PhoneLookup.PHOTO_THUMBNAIL_URI,
    170                 null, // PhoneLookup.CUSTOM_RINGTONE,
    171                 null, // PhoneLookup.HAS_PHONE_NUMBER,
    172                 null, // PhoneLookup.SEND_TO_VOICEMAIL,
    173                 null, // PhoneLookup.NUMBER,
    174                 null, // PhoneLookup.TYPE,
    175                 null, // PhoneLookup.LABEL,
    176                 null, // PhoneLookup.NORMALIZED_NUMBER
    177         });
    178 
    179         rewritten = new EnterpriseContactsCursorWrapper(c, projection, new int[] {0, 1}, null);
    180         assertEquals(5, rewritten.getCount());
    181         assertEquals(projection.length, rewritten.getColumnCount());
    182 
    183         rewritten.moveToFirst();
    184 
    185         // Verify the first row.
    186         int column = 0;
    187         assertEquals(1000000001L, rewritten.getLong(column++)); // We offset ID for corp contacts.
    188         assertEquals(1000000001L, rewritten.getLong(column++)); // We offset ID for corp contacts.
    189         assertEquals(null, rewritten.getString(column++));
    190         assertEquals(null, rewritten.getString(column++));
    191         assertEquals(null, rewritten.getString(column++));
    192         assertEquals(null, rewritten.getString(column++));
    193         assertEquals(null, rewritten.getString(column++));
    194         assertEquals(null, rewritten.getString(column++));
    195         assertEquals(null, rewritten.getString(column++));
    196         assertEquals(null, rewritten.getString(column++));
    197         assertEquals(null, rewritten.getString(column++));
    198         assertEquals(null, rewritten.getString(column++));
    199         assertEquals(null, rewritten.getString(column++));
    200         assertEquals(null, rewritten.getString(column++));
    201         assertEquals(null, rewritten.getString(column++));
    202         assertEquals(null, rewritten.getString(column++));
    203         assertEquals(null, rewritten.getString(column++));
    204         assertEquals(null, rewritten.getString(column++));
    205         assertEquals(null, rewritten.getString(column++));
    206         assertEquals(null, rewritten.getString(column++));
    207 
    208 
    209         // Verify the second row.
    210         rewritten.moveToNext();
    211         column = 0;
    212         assertEquals(1000000010L, rewritten.getLong(column++)); // With offset.
    213         assertEquals(1000000010L, rewritten.getLong(column++)); // With offset.
    214         assertEquals("c-key", rewritten.getString(column++));
    215         assertEquals("name", rewritten.getString(column++));
    216         assertEquals(123, rewritten.getInt(column++));
    217         assertEquals(456, rewritten.getInt(column++));
    218         assertEquals(1, rewritten.getInt(column++));
    219         assertEquals(1, rewritten.getInt(column++));
    220         assertEquals(1, rewritten.getInt(column++));
    221         assertEquals(null, rewritten.getString(column++)); // photo file id
    222         assertEquals(null, rewritten.getString(column++)); // photo id
    223         assertEquals(null,
    224                 rewritten.getString(column++));
    225         assertEquals(null,
    226                 rewritten.getString(column++));
    227         assertEquals(null, rewritten.getString(column++)); // ringtone
    228         assertEquals(1, rewritten.getInt(column++));
    229         assertEquals(1, rewritten.getInt(column++));
    230         assertEquals("1234", rewritten.getString(column++));
    231         assertEquals(1, rewritten.getInt(column++));
    232         assertEquals("label", rewritten.getString(column++));
    233         assertEquals("+1234", rewritten.getString(column++));
    234 
    235         // Verify the 3rd row.
    236         rewritten.moveToNext();
    237         assertEquals("content://com.android.contacts/contacts_corp/11/display_photo",
    238                 rewritten.getString(11));
    239         assertEquals("content://com.android.contacts/contacts_corp/11/photo",
    240                 rewritten.getString(12));
    241 
    242         // Verify the 4th row.
    243         rewritten.moveToNext();
    244         assertEquals("content://com.android.contacts/contacts_corp/12/photo",
    245                 rewritten.getString(11));
    246         assertEquals("content://com.android.contacts/contacts_corp/12/photo",
    247                 rewritten.getString(12));
    248 
    249 
    250         // Verify the 5th row.
    251         rewritten.moveToNext();
    252         assertEquals("content://com.android.contacts/contacts_corp/13/display_photo",
    253                 rewritten.getString(11));
    254         assertEquals("content://com.android.contacts/contacts_corp/13/photo",
    255                 rewritten.getString(12));
    256     }
    257 }
    258