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