/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the Common Development
* and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at
* src/com/vodafone360/people/VODAFONE.LICENSE.txt or
* http://github.com/360/360-Engine-for-Android
* See the License for the specific language governing permissions and
* limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each file and
* include the License file at src/com/vodafone360/people/VODAFONE.LICENSE.txt.
* If applicable, add the following below this CDDL HEADER, with the fields
* enclosed by brackets "[]" replaced with your own identifying information:
* Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*
* Copyright 2010 Vodafone Sales & Services Ltd. All rights reserved.
* Use is subject to license terms.
*/
package com.vodafone360.people.tests.database;
import java.util.ArrayList;
import java.util.List;
import android.graphics.Bitmap;
import android.test.ApplicationTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import android.util.Log;
import com.vodafone360.people.MainApplication;
import com.vodafone360.people.database.DatabaseHelper;
import com.vodafone360.people.database.DatabaseHelper.ThumbnailInfo;
import com.vodafone360.people.database.tables.ContactSummaryTable;
import com.vodafone360.people.datatypes.Contact;
import com.vodafone360.people.datatypes.ContactDetail;
import com.vodafone360.people.service.ServiceStatus;
import com.vodafone360.people.tests.TestModule;
public class NowPlusDBHelperThumbnailTest extends ApplicationTestCase<MainApplication> {
private static String LOG_TAG = "NowPlusDatabaseTest";
final static int WAIT_EVENT_TIMEOUT_MS = 30000;
final static int NUM_OF_CONTACTS = 3;
private static MainApplication mApplication = null;
private static DatabaseHelper mDatabaseHelper = null;
final TestModule mTestModule = new TestModule();
private DbTestUtility mTestUtility;
private static final int WIDTH = 50;
private static final int HEIGHT = 50;
private static final int STRIDE = 64;
private static int[] createColors() {
int[] colors = new int[STRIDE * HEIGHT];
for (int y = 0; y < HEIGHT; y++) {
for (int x = 0; x < WIDTH; x++) {
int r = x * 255 / (WIDTH - 1);
int g = y * 255 / (HEIGHT - 1);
int b = 255 - Math.min(r, g);
int a = Math.max(r, g);
colors[y * STRIDE + x] = (a << 24) | (r << 16) | (g << 8) | b;
}
}
return colors;
}
public NowPlusDBHelperThumbnailTest() {
super(MainApplication.class);
}
private boolean initialise() {
mTestUtility = new DbTestUtility(getContext());
createApplication();
mApplication = getApplication();
if(mApplication == null){
Log.e(LOG_TAG, "Unable to create main application");
return false;
}
mDatabaseHelper = mApplication.getDatabase();
if (mDatabaseHelper.getReadableDatabase() == null) {
return false;
}
mTestUtility.startEventWatcher(mDatabaseHelper);
return true;
}
private void shutdown() {
mTestUtility.stopEventWatcher();
}
@SmallTest
public void testDBHelperThumbnail() {
assertTrue(initialise());
mDatabaseHelper.removeUserData();
ServiceStatus status = mTestUtility.waitForEvent(WAIT_EVENT_TIMEOUT_MS,
DbTestUtility.CONTACTS_INT_EVENT_MASK);
assertEquals(ServiceStatus.SUCCESS, status);
Log.i(LOG_TAG, "Add a contact to ContactSummaryTable");
Contact contact = mTestModule.createDummyContactData();
status = mDatabaseHelper.addContact(contact);
assertEquals(ServiceStatus.SUCCESS, status);
Bitmap testBimap = Bitmap.createBitmap(createColors(), 0, STRIDE, WIDTH, HEIGHT,
Bitmap.Config.ARGB_8888);
ContactDetail cd = new ContactDetail();
cd.localContactID = contact.localContactID;
cd.photo = testBimap;
status = mDatabaseHelper.addContactDetail(cd);
status = ContactSummaryTable.modifyPictureLoadedFlag(
contact.localContactID, false, mDatabaseHelper
.getWritableDatabase());
assertEquals(ServiceStatus.SUCCESS, status);
int numOfThumbnails = mDatabaseHelper.fetchThumbnailUrlCount();
assertEquals(1, numOfThumbnails);
List<ThumbnailInfo> thumbInfoList = new ArrayList<ThumbnailInfo>();
status = mDatabaseHelper.fetchThumbnailUrls(thumbInfoList, 0, 1);
assertEquals(ServiceStatus.SUCCESS, status);
shutdown();
}
}