15a60e47497f21f64e6d79420dc4c56c1907df22akschulzpackage com.android.bluetooth.tests; 25a60e47497f21f64e6d79420dc4c56c1907df22akschulz 35a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport java.io.IOException; 45a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport java.util.Date; 55a60e47497f21f64e6d79420dc4c56c1907df22akschulz 65a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport javax.obex.HeaderSet; 75a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport javax.obex.Operation; 85a60e47497f21f64e6d79420dc4c56c1907df22akschulz 95a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport android.annotation.TargetApi; 105a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport android.content.ContentResolver; 115a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport android.content.ContentValues; 125a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport android.content.Context; 135a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport android.net.Uri; 145a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport android.provider.ContactsContract; 155a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport android.provider.Telephony.Sms; 165a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport android.test.AndroidTestCase; 175a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport android.util.Log; 185a60e47497f21f64e6d79420dc4c56c1907df22akschulz 195a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport com.android.bluetooth.map.BluetoothMapConvoContactElement; 205a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport com.android.bluetooth.map.BluetoothMapConvoListing; 215a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport com.android.bluetooth.map.BluetoothMapConvoListingElement; 225a60e47497f21f64e6d79420dc4c56c1907df22akschulzimport com.android.bluetooth.mapapi.BluetoothMapContract; 235a60e47497f21f64e6d79420dc4c56c1907df22akschulz 245a60e47497f21f64e6d79420dc4c56c1907df22akschulz/** 255a60e47497f21f64e6d79420dc4c56c1907df22akschulz * Class to hold test data - both the server side data to insert into the databases, and the 265a60e47497f21f64e6d79420dc4c56c1907df22akschulz * validation data to validate the result, when reading back the data. 275a60e47497f21f64e6d79420dc4c56c1907df22akschulz * 285a60e47497f21f64e6d79420dc4c56c1907df22akschulz * Should be data only, not operation specific functionality (client). 295a60e47497f21f64e6d79420dc4c56c1907df22akschulz * 305a60e47497f21f64e6d79420dc4c56c1907df22akschulz * Please try to keep useful functionality call-able from a test case, to make it possible 315a60e47497f21f64e6d79420dc4c56c1907df22akschulz * to call a single test case to e.g. inject some contacts or messages into the database. 325a60e47497f21f64e6d79420dc4c56c1907df22akschulz * 335a60e47497f21f64e6d79420dc4c56c1907df22akschulz */ 345a60e47497f21f64e6d79420dc4c56c1907df22akschulz@TargetApi(20) 355a60e47497f21f64e6d79420dc4c56c1907df22akschulzpublic class MapTestData extends AndroidTestCase { 365a60e47497f21f64e6d79420dc4c56c1907df22akschulz private static final String TAG = "MapTestData"; 375a60e47497f21f64e6d79420dc4c56c1907df22akschulz 385a60e47497f21f64e6d79420dc4c56c1907df22akschulz /* Test validation variables */ 395a60e47497f21f64e6d79420dc4c56c1907df22akschulz static final String TEST_CONTACT_NAME = "Jesus Überboss"; 405a60e47497f21f64e6d79420dc4c56c1907df22akschulz static final String TEST_CONTACT_PHONE = "55566688"; 415a60e47497f21f64e6d79420dc4c56c1907df22akschulz static final String TEST_CONTACT_EMAIL = "boss@the.skyes"; 425a60e47497f21f64e6d79420dc4c56c1907df22akschulz static final int TEST_NUM_CONTACTS = 3; 435a60e47497f21f64e6d79420dc4c56c1907df22akschulz 445a60e47497f21f64e6d79420dc4c56c1907df22akschulz static final int TEST_ADD_CONTACT_PER_ITERATIONS = 4; 455a60e47497f21f64e6d79420dc4c56c1907df22akschulz /* I do know this function is deprecated, but I'm unable to find a good alternative 465a60e47497f21f64e6d79420dc4c56c1907df22akschulz * except from taking a copy of the Date.UTC function as suggested. */ 475a60e47497f21f64e6d79420dc4c56c1907df22akschulz // NOTE: This will only set the data on the message - not the lastActivity on SMS/MMS threads 485a60e47497f21f64e6d79420dc4c56c1907df22akschulz static final long TEST_ACTIVITY_BEGIN = Date.UTC( 495a60e47497f21f64e6d79420dc4c56c1907df22akschulz 2014-1900, 505a60e47497f21f64e6d79420dc4c56c1907df22akschulz 8-1, /* month 0-11*/ 515a60e47497f21f64e6d79420dc4c56c1907df22akschulz 22, /*day 1-31 */ 525a60e47497f21f64e6d79420dc4c56c1907df22akschulz 22, /*hour*/ 535a60e47497f21f64e6d79420dc4c56c1907df22akschulz 15, /*minute*/ 545a60e47497f21f64e6d79420dc4c56c1907df22akschulz 20 /*second*/); 555a60e47497f21f64e6d79420dc4c56c1907df22akschulz 565a60e47497f21f64e6d79420dc4c56c1907df22akschulz static final String TEST_ACTIVITY_BEGIN_STRING = "20150102T150047"; 575a60e47497f21f64e6d79420dc4c56c1907df22akschulz static final String TEST_ACTIVITY_END_STRING = "20160102T150047"; 585a60e47497f21f64e6d79420dc4c56c1907df22akschulz 595a60e47497f21f64e6d79420dc4c56c1907df22akschulz static final int TEST_ACTIVITY_INTERVAL = 5*60*1000; /*ms*/ 605a60e47497f21f64e6d79420dc4c56c1907df22akschulz 615a60e47497f21f64e6d79420dc4c56c1907df22akschulz static Context sContext = null; 625a60e47497f21f64e6d79420dc4c56c1907df22akschulz public static void init(Context context){ 635a60e47497f21f64e6d79420dc4c56c1907df22akschulz sContext = context; 645a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 655a60e47497f21f64e6d79420dc4c56c1907df22akschulz /** 665a60e47497f21f64e6d79420dc4c56c1907df22akschulz * Adds messages to the SMS message database. 675a60e47497f21f64e6d79420dc4c56c1907df22akschulz */ 685a60e47497f21f64e6d79420dc4c56c1907df22akschulz public static class MapAddSmsMessages implements ISeqStepAction { 695a60e47497f21f64e6d79420dc4c56c1907df22akschulz int mCount; 705a60e47497f21f64e6d79420dc4c56c1907df22akschulz /** 715a60e47497f21f64e6d79420dc4c56c1907df22akschulz * 725a60e47497f21f64e6d79420dc4c56c1907df22akschulz * @param count the number of iterations to execute 735a60e47497f21f64e6d79420dc4c56c1907df22akschulz */ 745a60e47497f21f64e6d79420dc4c56c1907df22akschulz public MapAddSmsMessages(int count) { 755a60e47497f21f64e6d79420dc4c56c1907df22akschulz mCount = count; 765a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 775a60e47497f21f64e6d79420dc4c56c1907df22akschulz 785a60e47497f21f64e6d79420dc4c56c1907df22akschulz @Override 795a60e47497f21f64e6d79420dc4c56c1907df22akschulz public void execute(SeqStep step, HeaderSet request, Operation op) 805a60e47497f21f64e6d79420dc4c56c1907df22akschulz throws IOException { 815a60e47497f21f64e6d79420dc4c56c1907df22akschulz int count = mCount; // Number of messages in each conversation 825a60e47497f21f64e6d79420dc4c56c1907df22akschulz ContentResolver resolver = sContext.getContentResolver(); 835a60e47497f21f64e6d79420dc4c56c1907df22akschulz 845a60e47497f21f64e6d79420dc4c56c1907df22akschulz // Insert some messages 855a60e47497f21f64e6d79420dc4c56c1907df22akschulz insertTestMessages(resolver, step.index, count); 865a60e47497f21f64e6d79420dc4c56c1907df22akschulz 875a60e47497f21f64e6d79420dc4c56c1907df22akschulz // Cleanup if needed to avoid duplicates 885a60e47497f21f64e6d79420dc4c56c1907df22akschulz deleteTestContacts(resolver); 895a60e47497f21f64e6d79420dc4c56c1907df22akschulz 905a60e47497f21f64e6d79420dc4c56c1907df22akschulz // And now add the contacts 915a60e47497f21f64e6d79420dc4c56c1907df22akschulz setupTestContacts(resolver); 925a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 935a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 945a60e47497f21f64e6d79420dc4c56c1907df22akschulz 955a60e47497f21f64e6d79420dc4c56c1907df22akschulz /** 965a60e47497f21f64e6d79420dc4c56c1907df22akschulz * TODO: Only works for filter on TEST_CONTACT_NAME 975a60e47497f21f64e6d79420dc4c56c1907df22akschulz * @param maxCount 985a60e47497f21f64e6d79420dc4c56c1907df22akschulz * @param offset 995a60e47497f21f64e6d79420dc4c56c1907df22akschulz * @param filterContact 1005a60e47497f21f64e6d79420dc4c56c1907df22akschulz * @param read 1015a60e47497f21f64e6d79420dc4c56c1907df22akschulz * @param reportRead 1025a60e47497f21f64e6d79420dc4c56c1907df22akschulz * @param msgCount 1035a60e47497f21f64e6d79420dc4c56c1907df22akschulz * @return 1045a60e47497f21f64e6d79420dc4c56c1907df22akschulz */ 1055a60e47497f21f64e6d79420dc4c56c1907df22akschulz public static BluetoothMapConvoListing getConvoListingReference(int maxCount, int offset, 1065a60e47497f21f64e6d79420dc4c56c1907df22akschulz boolean filterContact, boolean read, boolean reportRead, int msgCount){ 1075a60e47497f21f64e6d79420dc4c56c1907df22akschulz BluetoothMapConvoListing list = new BluetoothMapConvoListing(); 1085a60e47497f21f64e6d79420dc4c56c1907df22akschulz BluetoothMapConvoListingElement element; 1095a60e47497f21f64e6d79420dc4c56c1907df22akschulz BluetoothMapConvoContactElement contact; 1105a60e47497f21f64e6d79420dc4c56c1907df22akschulz element = new BluetoothMapConvoListingElement(); 1115a60e47497f21f64e6d79420dc4c56c1907df22akschulz element.setRead(read, reportRead); 1125a60e47497f21f64e6d79420dc4c56c1907df22akschulz element.setVersionCounter(0); 1135a60e47497f21f64e6d79420dc4c56c1907df22akschulz contact = new BluetoothMapConvoContactElement(); 1145a60e47497f21f64e6d79420dc4c56c1907df22akschulz contact.setName(TEST_CONTACT_NAME); 1155a60e47497f21f64e6d79420dc4c56c1907df22akschulz contact.setLastActivity(TEST_ACTIVITY_BEGIN + 1165a60e47497f21f64e6d79420dc4c56c1907df22akschulz msgCount*TEST_ADD_CONTACT_PER_ITERATIONS*TEST_ACTIVITY_INTERVAL); 1175a60e47497f21f64e6d79420dc4c56c1907df22akschulz element.addContact(contact); 1185a60e47497f21f64e6d79420dc4c56c1907df22akschulz list.add(element); 1195a60e47497f21f64e6d79420dc4c56c1907df22akschulz return null; 1205a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 1215a60e47497f21f64e6d79420dc4c56c1907df22akschulz 1225a60e47497f21f64e6d79420dc4c56c1907df22akschulz public static void insertTestMessages(ContentResolver resolver, int tag, int count) { 1235a60e47497f21f64e6d79420dc4c56c1907df22akschulz ContentValues values[] = new ContentValues[count*4]; // 4 messages/iteration 1245a60e47497f21f64e6d79420dc4c56c1907df22akschulz long date = TEST_ACTIVITY_BEGIN; 1255a60e47497f21f64e6d79420dc4c56c1907df22akschulz Log.i(TAG, "Preparing messages... with data = " + date); 1265a60e47497f21f64e6d79420dc4c56c1907df22akschulz 1275a60e47497f21f64e6d79420dc4c56c1907df22akschulz for (int x = 0;x < count;x++){ 1285a60e47497f21f64e6d79420dc4c56c1907df22akschulz /* NOTE: Update TEST_ADD_CONTACT_PER_ITERATIONS if more messages are added */ 1295a60e47497f21f64e6d79420dc4c56c1907df22akschulz ContentValues item = new ContentValues(5); 1305a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("address", "98765432"); 1315a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("body", "test message " + x + " step index: " + tag); 1325a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("date", date+=TEST_ACTIVITY_INTERVAL); 1335a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("read", "0"); 1345a60e47497f21f64e6d79420dc4c56c1907df22akschulz if(x%2 == 0) { 1355a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("type", Sms.MESSAGE_TYPE_INBOX); 1365a60e47497f21f64e6d79420dc4c56c1907df22akschulz } else { 1375a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("type", Sms.MESSAGE_TYPE_SENT); 1385a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 1395a60e47497f21f64e6d79420dc4c56c1907df22akschulz values[x] = item; 1405a60e47497f21f64e6d79420dc4c56c1907df22akschulz 1415a60e47497f21f64e6d79420dc4c56c1907df22akschulz item = new ContentValues(5); 1425a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("address", "23456780"); 1435a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("body", "test message " + x + " step index: " + tag); 1445a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("date", date += TEST_ACTIVITY_INTERVAL); 1455a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("read", "0"); 1465a60e47497f21f64e6d79420dc4c56c1907df22akschulz if(x%2 == 0) { 1475a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("type", Sms.MESSAGE_TYPE_INBOX); 1485a60e47497f21f64e6d79420dc4c56c1907df22akschulz } else { 1495a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("type", Sms.MESSAGE_TYPE_SENT); 1505a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 1515a60e47497f21f64e6d79420dc4c56c1907df22akschulz values[count+x] = item; 1525a60e47497f21f64e6d79420dc4c56c1907df22akschulz 1535a60e47497f21f64e6d79420dc4c56c1907df22akschulz item = new ContentValues(5); 1545a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("address", "+4523456780"); 1555a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("body", "test message "+x+" step index: " + tag); 1565a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("date", date += TEST_ACTIVITY_INTERVAL); 1575a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("read", "0"); 1585a60e47497f21f64e6d79420dc4c56c1907df22akschulz if(x%2 == 0) { 1595a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("type", Sms.MESSAGE_TYPE_INBOX); 1605a60e47497f21f64e6d79420dc4c56c1907df22akschulz } else { 1615a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("type", Sms.MESSAGE_TYPE_SENT); 1625a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 1635a60e47497f21f64e6d79420dc4c56c1907df22akschulz values[2*count+x] = item; 1645a60e47497f21f64e6d79420dc4c56c1907df22akschulz 1655a60e47497f21f64e6d79420dc4c56c1907df22akschulz /* This is the message used for test */ 1665a60e47497f21f64e6d79420dc4c56c1907df22akschulz item = new ContentValues(5); 1675a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("address", TEST_CONTACT_PHONE); 1685a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("body", "test message "+x+" step index: " + tag); 1695a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("date", date += TEST_ACTIVITY_INTERVAL); 1705a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("read", "0"); 1715a60e47497f21f64e6d79420dc4c56c1907df22akschulz if(x%2 == 0) { 1725a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("type", Sms.MESSAGE_TYPE_INBOX); 1735a60e47497f21f64e6d79420dc4c56c1907df22akschulz } else { 1745a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put("type", Sms.MESSAGE_TYPE_SENT); 1755a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 1765a60e47497f21f64e6d79420dc4c56c1907df22akschulz values[3*count+x] = item; 1775a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 1785a60e47497f21f64e6d79420dc4c56c1907df22akschulz 1795a60e47497f21f64e6d79420dc4c56c1907df22akschulz Log.i(TAG, "Starting bulk insert..."); 1805a60e47497f21f64e6d79420dc4c56c1907df22akschulz resolver.bulkInsert(Uri.parse("content://sms"), values); 1815a60e47497f21f64e6d79420dc4c56c1907df22akschulz Log.i(TAG, "Bulk insert done."); 1825a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 1835a60e47497f21f64e6d79420dc4c56c1907df22akschulz 1845a60e47497f21f64e6d79420dc4c56c1907df22akschulz /** 1855a60e47497f21f64e6d79420dc4c56c1907df22akschulz * Insert a few contacts in the main contact database, using a test account. 1865a60e47497f21f64e6d79420dc4c56c1907df22akschulz */ 1875a60e47497f21f64e6d79420dc4c56c1907df22akschulz public static void setupTestContacts(ContentResolver resolver){ 1885a60e47497f21f64e6d79420dc4c56c1907df22akschulz /*TEST_NUM_CONTACTS must be updated if this function is changed */ 1895a60e47497f21f64e6d79420dc4c56c1907df22akschulz insertContact(resolver, "Hans Hansen", "98765432", "hans@hansens.global"); 1905a60e47497f21f64e6d79420dc4c56c1907df22akschulz insertContact(resolver, "Helle Børgesen", "23456780", "hb@gmail.com"); 1915a60e47497f21f64e6d79420dc4c56c1907df22akschulz insertContact(resolver, TEST_CONTACT_NAME, TEST_CONTACT_PHONE, TEST_CONTACT_EMAIL); 1925a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 1935a60e47497f21f64e6d79420dc4c56c1907df22akschulz 1945a60e47497f21f64e6d79420dc4c56c1907df22akschulz /** 1955a60e47497f21f64e6d79420dc4c56c1907df22akschulz * Helper function to insert a contact 1965a60e47497f21f64e6d79420dc4c56c1907df22akschulz * @param name 1975a60e47497f21f64e6d79420dc4c56c1907df22akschulz * @param phone 1985a60e47497f21f64e6d79420dc4c56c1907df22akschulz * @param email 1995a60e47497f21f64e6d79420dc4c56c1907df22akschulz */ 2005a60e47497f21f64e6d79420dc4c56c1907df22akschulz private static void insertContact(ContentResolver resolver, String name, String phone, String email) { 2015a60e47497f21f64e6d79420dc4c56c1907df22akschulz // Get the account info 2025a60e47497f21f64e6d79420dc4c56c1907df22akschulz //Cursor c = resolver.query(uri, projection, selection, selectionArgs, sortOrder) 2035a60e47497f21f64e6d79420dc4c56c1907df22akschulz ContentValues item = new ContentValues(3); 2045a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put(ContactsContract.RawContacts.ACCOUNT_TYPE, "test_account"); 2055a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put(ContactsContract.RawContacts.ACCOUNT_NAME, "MAP account"); 2065a60e47497f21f64e6d79420dc4c56c1907df22akschulz Uri uri = resolver.insert(ContactsContract.RawContacts.CONTENT_URI, item); 2075a60e47497f21f64e6d79420dc4c56c1907df22akschulz Log.i(TAG, "Inserted RawContact: " + uri); 2085a60e47497f21f64e6d79420dc4c56c1907df22akschulz long rawId = Long.parseLong(uri.getLastPathSegment()); 2095a60e47497f21f64e6d79420dc4c56c1907df22akschulz 2105a60e47497f21f64e6d79420dc4c56c1907df22akschulz //Now add contact information 2115a60e47497f21f64e6d79420dc4c56c1907df22akschulz item = new ContentValues(3); 2125a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put(ContactsContract.Data.RAW_CONTACT_ID, rawId); 2135a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put(ContactsContract.Data.MIMETYPE, 2145a60e47497f21f64e6d79420dc4c56c1907df22akschulz ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE); 2155a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, 2165a60e47497f21f64e6d79420dc4c56c1907df22akschulz name); 2175a60e47497f21f64e6d79420dc4c56c1907df22akschulz resolver.insert(ContactsContract.Data.CONTENT_URI, item); 2185a60e47497f21f64e6d79420dc4c56c1907df22akschulz 2195a60e47497f21f64e6d79420dc4c56c1907df22akschulz if(phone != null) { 2205a60e47497f21f64e6d79420dc4c56c1907df22akschulz item = new ContentValues(3); 2215a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put(ContactsContract.Data.RAW_CONTACT_ID, rawId); 2225a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put(ContactsContract.Data.MIMETYPE, 2235a60e47497f21f64e6d79420dc4c56c1907df22akschulz ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); 2245a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone); 2255a60e47497f21f64e6d79420dc4c56c1907df22akschulz resolver.insert(ContactsContract.Data.CONTENT_URI, item); 2265a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 2275a60e47497f21f64e6d79420dc4c56c1907df22akschulz 2285a60e47497f21f64e6d79420dc4c56c1907df22akschulz if(email != null) { 2295a60e47497f21f64e6d79420dc4c56c1907df22akschulz item = new ContentValues(3); 2305a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put(ContactsContract.Data.RAW_CONTACT_ID, rawId); 2315a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put(ContactsContract.Data.MIMETYPE, 2325a60e47497f21f64e6d79420dc4c56c1907df22akschulz ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE); 2335a60e47497f21f64e6d79420dc4c56c1907df22akschulz item.put(ContactsContract.CommonDataKinds.Email.ADDRESS, email); 2345a60e47497f21f64e6d79420dc4c56c1907df22akschulz resolver.insert(ContactsContract.Data.CONTENT_URI, item); 2355a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 2365a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 2375a60e47497f21f64e6d79420dc4c56c1907df22akschulz 2385a60e47497f21f64e6d79420dc4c56c1907df22akschulz /** 2395a60e47497f21f64e6d79420dc4c56c1907df22akschulz * Delete all contacts belonging to the test_account. 2405a60e47497f21f64e6d79420dc4c56c1907df22akschulz */ 2415a60e47497f21f64e6d79420dc4c56c1907df22akschulz public static void deleteTestContacts(ContentResolver resolver){ 2425a60e47497f21f64e6d79420dc4c56c1907df22akschulz resolver.delete(ContactsContract.RawContacts.CONTENT_URI, 2435a60e47497f21f64e6d79420dc4c56c1907df22akschulz ContactsContract.RawContacts.ACCOUNT_TYPE + "=\"test_account\"", null); 2445a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 2455a60e47497f21f64e6d79420dc4c56c1907df22akschulz 2465a60e47497f21f64e6d79420dc4c56c1907df22akschulz /**************************************************************************** 2475a60e47497f21f64e6d79420dc4c56c1907df22akschulz * Small test cases to trigger the functionality without running a sequence. 2485a60e47497f21f64e6d79420dc4c56c1907df22akschulz ****************************************************************************/ 2495a60e47497f21f64e6d79420dc4c56c1907df22akschulz /** 2505a60e47497f21f64e6d79420dc4c56c1907df22akschulz * Insert a few contacts in the main contact database, using a test account. 2515a60e47497f21f64e6d79420dc4c56c1907df22akschulz */ 2525a60e47497f21f64e6d79420dc4c56c1907df22akschulz public void testInsertMessages() { 2535a60e47497f21f64e6d79420dc4c56c1907df22akschulz ContentResolver resolver = mContext.getContentResolver(); 2545a60e47497f21f64e6d79420dc4c56c1907df22akschulz insertTestMessages(resolver, 1234, 10); 2555a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 2565a60e47497f21f64e6d79420dc4c56c1907df22akschulz 2575a60e47497f21f64e6d79420dc4c56c1907df22akschulz public void testInsert1000Messages() { 2585a60e47497f21f64e6d79420dc4c56c1907df22akschulz ContentResolver resolver = mContext.getContentResolver(); 2595a60e47497f21f64e6d79420dc4c56c1907df22akschulz insertTestMessages(resolver, 1234, 1000); 2605a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 2615a60e47497f21f64e6d79420dc4c56c1907df22akschulz 2625a60e47497f21f64e6d79420dc4c56c1907df22akschulz /** 2635a60e47497f21f64e6d79420dc4c56c1907df22akschulz * Insert a few contacts in the main contact database, using a test account. 2645a60e47497f21f64e6d79420dc4c56c1907df22akschulz */ 2655a60e47497f21f64e6d79420dc4c56c1907df22akschulz public void testSetupContacts() { 2665a60e47497f21f64e6d79420dc4c56c1907df22akschulz ContentResolver resolver = mContext.getContentResolver(); 2675a60e47497f21f64e6d79420dc4c56c1907df22akschulz setupTestContacts(resolver); 2685a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 2695a60e47497f21f64e6d79420dc4c56c1907df22akschulz 2705a60e47497f21f64e6d79420dc4c56c1907df22akschulz /** 2715a60e47497f21f64e6d79420dc4c56c1907df22akschulz * Delete all contacts belonging to the test_account. 2725a60e47497f21f64e6d79420dc4c56c1907df22akschulz */ 2735a60e47497f21f64e6d79420dc4c56c1907df22akschulz public void testDeleteTestContacts() { 2745a60e47497f21f64e6d79420dc4c56c1907df22akschulz ContentResolver resolver = mContext.getContentResolver(); 2755a60e47497f21f64e6d79420dc4c56c1907df22akschulz deleteTestContacts(resolver); 2765a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 2775a60e47497f21f64e6d79420dc4c56c1907df22akschulz 2785a60e47497f21f64e6d79420dc4c56c1907df22akschulz public void testSetup1000Contacts() { 2795a60e47497f21f64e6d79420dc4c56c1907df22akschulz ContentResolver resolver = mContext.getContentResolver(); 2805a60e47497f21f64e6d79420dc4c56c1907df22akschulz for(int i = 0; i < 1000; i++) { 2815a60e47497f21f64e6d79420dc4c56c1907df22akschulz insertContact(resolver, "Hans Hansen " + i, 2825a60e47497f21f64e6d79420dc4c56c1907df22akschulz "98765431" + i, "hans" + i + "@hansens.global"); 2835a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 2845a60e47497f21f64e6d79420dc4c56c1907df22akschulz } 2855a60e47497f21f64e6d79420dc4c56c1907df22akschulz 2865a60e47497f21f64e6d79420dc4c56c1907df22akschulz} 287