blob: 66cebfc9b1d0b84c92d59266f19bc8d607af8263 [file] [log] [blame]
/*
* Copyright (C) 2016 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.providers.contacts;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.provider.ContactsContract.PhoneLookup;
import android.test.AndroidTestCase;
import android.test.MoreAsserts;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.providers.contacts.enterprise.EnterpriseContactsCursorWrapper;
@SmallTest
public class EnterpriseContactsCursorWrapperTest extends AndroidTestCase {
public void testWrappedResults() {
final String[] projection = new String[] {
/* column 0 */ PhoneLookup._ID,
/* column 1 */ PhoneLookup.CONTACT_ID,
/* column 2 */ PhoneLookup.LOOKUP_KEY,
/* column 3 */ PhoneLookup.DISPLAY_NAME,
/* column 4 */ PhoneLookup.LAST_TIME_CONTACTED,
/* column 5 */ PhoneLookup.TIMES_CONTACTED,
/* column 6 */ PhoneLookup.STARRED,
/* column 7 */ PhoneLookup.IN_DEFAULT_DIRECTORY,
/* column 8 */ PhoneLookup.IN_VISIBLE_GROUP,
/* column 9 */ PhoneLookup.PHOTO_FILE_ID,
/* column 10 */ PhoneLookup.PHOTO_ID,
/* column 11 */ PhoneLookup.PHOTO_URI,
/* column 12 */ PhoneLookup.PHOTO_THUMBNAIL_URI,
/* column 13 */ PhoneLookup.CUSTOM_RINGTONE,
/* column 14 */ PhoneLookup.HAS_PHONE_NUMBER,
/* column 15 */ PhoneLookup.SEND_TO_VOICEMAIL,
/* column 16 */ PhoneLookup.NUMBER,
/* column 17 */ PhoneLookup.TYPE,
/* column 18 */ PhoneLookup.LABEL,
/* column 19 */ PhoneLookup.NORMALIZED_NUMBER
};
final MatrixCursor c = new MatrixCursor(projection);
// First, convert and make sure it returns an empty cursor.
Cursor rewritten = new EnterpriseContactsCursorWrapper(c, projection,
new int[] {0, 1}, null);
assertEquals(0, rewritten.getCount());
assertEquals(projection.length, rewritten.getColumnCount());
c.addRow(new Object[] {
1L, // PhoneLookup._ID,
1L, // PhoneLookup.CONTACT_ID,
null, // PhoneLookup.LOOKUP_KEY,
null, // PhoneLookup.DISPLAY_NAME,
null, // PhoneLookup.LAST_TIME_CONTACTED,
null, // PhoneLookup.TIMES_CONTACTED,
null, // PhoneLookup.STARRED,
null, // PhoneLookup.IN_DEFAULT_DIRECTORY,
null, // PhoneLookup.IN_VISIBLE_GROUP,
null, // PhoneLookup.PHOTO_FILE_ID,
null, // PhoneLookup.PHOTO_ID,
null, // PhoneLookup.PHOTO_URI,
null, // PhoneLookup.PHOTO_THUMBNAIL_URI,
null, // PhoneLookup.CUSTOM_RINGTONE,
null, // PhoneLookup.HAS_PHONE_NUMBER,
null, // PhoneLookup.SEND_TO_VOICEMAIL,
null, // PhoneLookup.NUMBER,
null, // PhoneLookup.TYPE,
null, // PhoneLookup.LABEL,
null, // PhoneLookup.NORMALIZED_NUMBER
});
c.addRow(new Object[] {
10L, // PhoneLookup._ID,
10L, // PhoneLookup.CONTACT_ID,
"key", // PhoneLookup.LOOKUP_KEY,
"name", // PhoneLookup.DISPLAY_NAME,
123, // PhoneLookup.LAST_TIME_CONTACTED,
456, // PhoneLookup.TIMES_CONTACTED,
1, // PhoneLookup.STARRED,
1, // PhoneLookup.IN_DEFAULT_DIRECTORY,
1, // PhoneLookup.IN_VISIBLE_GROUP,
1001, // PhoneLookup.PHOTO_FILE_ID,
1002, // PhoneLookup.PHOTO_ID,
"content://a/a", // PhoneLookup.PHOTO_URI,
"content://a/b", // PhoneLookup.PHOTO_THUMBNAIL_URI,
"content://a/c", // PhoneLookup.CUSTOM_RINGTONE,
1, // PhoneLookup.HAS_PHONE_NUMBER,
1, // PhoneLookup.SEND_TO_VOICEMAIL,
"1234", // PhoneLookup.NUMBER,
1, // PhoneLookup.TYPE,
"label", // PhoneLookup.LABEL,
"+1234", // PhoneLookup.NORMALIZED_NUMBER
});
c.addRow(new Object[] {
11L, // PhoneLookup._ID,
11L, // PhoneLookup.CONTACT_ID,
null, // PhoneLookup.LOOKUP_KEY,
null, // PhoneLookup.DISPLAY_NAME,
null, // PhoneLookup.LAST_TIME_CONTACTED,
null, // PhoneLookup.TIMES_CONTACTED,
null, // PhoneLookup.STARRED,
null, // PhoneLookup.IN_DEFAULT_DIRECTORY,
null, // PhoneLookup.IN_VISIBLE_GROUP,
null, // PhoneLookup.PHOTO_FILE_ID,
null, // PhoneLookup.PHOTO_ID,
"content://com.android.contacts/contacts/11/display_photo", // PhoneLookup.PHOTO_URI,
"content://com.android.contacts/contacts/11/photo", // PhoneLookup.PHOTO_THUMBNAIL_URI,
null, // PhoneLookup.CUSTOM_RINGTONE,
null, // PhoneLookup.HAS_PHONE_NUMBER,
null, // PhoneLookup.SEND_TO_VOICEMAIL,
null, // PhoneLookup.NUMBER,
null, // PhoneLookup.TYPE,
null, // PhoneLookup.LABEL,
null, // PhoneLookup.NORMALIZED_NUMBER
});
c.addRow(new Object[] {
12L, // PhoneLookup._ID,
12L, // PhoneLookup.CONTACT_ID,
null, // PhoneLookup.LOOKUP_KEY,
null, // PhoneLookup.DISPLAY_NAME,
null, // PhoneLookup.LAST_TIME_CONTACTED,
null, // PhoneLookup.TIMES_CONTACTED,
null, // PhoneLookup.STARRED,
null, // PhoneLookup.IN_DEFAULT_DIRECTORY,
null, // PhoneLookup.IN_VISIBLE_GROUP,
null, // PhoneLookup.PHOTO_FILE_ID,
null, // PhoneLookup.PHOTO_ID,
"content://com.android.contacts/contacts/12/photo", // PhoneLookup.PHOTO_URI,
"content://com.android.contacts/contacts/12/photo", // PhoneLookup.PHOTO_THUMBNAIL_URI,
null, // PhoneLookup.CUSTOM_RINGTONE,
null, // PhoneLookup.HAS_PHONE_NUMBER,
null, // PhoneLookup.SEND_TO_VOICEMAIL,
null, // PhoneLookup.NUMBER,
null, // PhoneLookup.TYPE,
null, // PhoneLookup.LABEL,
null, // PhoneLookup.NORMALIZED_NUMBER
});
c.addRow(new Object[] {
13L, // PhoneLookup._ID,
13L, // PhoneLookup.CONTACT_ID,
null, // PhoneLookup.LOOKUP_KEY,
null, // PhoneLookup.DISPLAY_NAME,
null, // PhoneLookup.LAST_TIME_CONTACTED,
null, // PhoneLookup.TIMES_CONTACTED,
null, // PhoneLookup.STARRED,
null, // PhoneLookup.IN_DEFAULT_DIRECTORY,
null, // PhoneLookup.IN_VISIBLE_GROUP,
123L, // PhoneLookup.PHOTO_FILE_ID,
null, // PhoneLookup.PHOTO_ID,
"content://com.android.contacts/display_photo/123", // PhoneLookup.PHOTO_URI,
"content://com.android.contacts/contacts/13/photo", // PhoneLookup.PHOTO_THUMBNAIL_URI,
null, // PhoneLookup.CUSTOM_RINGTONE,
null, // PhoneLookup.HAS_PHONE_NUMBER,
null, // PhoneLookup.SEND_TO_VOICEMAIL,
null, // PhoneLookup.NUMBER,
null, // PhoneLookup.TYPE,
null, // PhoneLookup.LABEL,
null, // PhoneLookup.NORMALIZED_NUMBER
});
rewritten = new EnterpriseContactsCursorWrapper(c, projection, new int[] {0, 1}, null);
assertEquals(5, rewritten.getCount());
assertEquals(projection.length, rewritten.getColumnCount());
rewritten.moveToFirst();
// Verify the first row.
int column = 0;
assertEquals(1000000001L, rewritten.getLong(column++)); // We offset ID for corp contacts.
assertEquals(1000000001L, rewritten.getLong(column++)); // We offset ID for corp contacts.
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++));
// Verify the second row.
rewritten.moveToNext();
column = 0;
assertEquals(1000000010L, rewritten.getLong(column++)); // With offset.
assertEquals(1000000010L, rewritten.getLong(column++)); // With offset.
assertEquals("c-key", rewritten.getString(column++));
assertEquals("name", rewritten.getString(column++));
assertEquals(123, rewritten.getInt(column++));
assertEquals(456, rewritten.getInt(column++));
assertEquals(1, rewritten.getInt(column++));
assertEquals(1, rewritten.getInt(column++));
assertEquals(1, rewritten.getInt(column++));
assertEquals(null, rewritten.getString(column++)); // photo file id
assertEquals(null, rewritten.getString(column++)); // photo id
assertEquals(null,
rewritten.getString(column++));
assertEquals(null,
rewritten.getString(column++));
assertEquals(null, rewritten.getString(column++)); // ringtone
assertEquals(1, rewritten.getInt(column++));
assertEquals(1, rewritten.getInt(column++));
assertEquals("1234", rewritten.getString(column++));
assertEquals(1, rewritten.getInt(column++));
assertEquals("label", rewritten.getString(column++));
assertEquals("+1234", rewritten.getString(column++));
// Verify the 3rd row.
rewritten.moveToNext();
assertEquals("content://com.android.contacts/contacts_corp/11/display_photo",
rewritten.getString(11));
assertEquals("content://com.android.contacts/contacts_corp/11/photo",
rewritten.getString(12));
// Verify the 4th row.
rewritten.moveToNext();
assertEquals("content://com.android.contacts/contacts_corp/12/photo",
rewritten.getString(11));
assertEquals("content://com.android.contacts/contacts_corp/12/photo",
rewritten.getString(12));
// Verify the 5th row.
rewritten.moveToNext();
assertEquals("content://com.android.contacts/contacts_corp/13/display_photo",
rewritten.getString(11));
assertEquals("content://com.android.contacts/contacts_corp/13/photo",
rewritten.getString(12));
}
}