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