Fix most of photo tests
Adjusting existing unit tests for higher res photos turned out to be tricky,
because the size of the test images were selected for 256x256.
(e.g. cropping tests)
Also we don't want the display photo size to change depending on the running
device.
So let's just keep using 256x256 for all unit tests.
Added new asserts to EvenMoreAssert to compare image raw data, which prints
actual/expected dimensions when it fails.
Even with this CL, ContactsProvider2Test.testInputStreamForPhoto() still fails
with the following assert message. The image size seems to be correct, so I'm
not sure why. This may be because we've changed the compression rate, but
I didn't dig into it.
"Different data lengths: expected=1088 actual=1578,
expected dimentions=[96 x 96] actual dimentions=[96 x 96]"
Anyway, with this CL at least PhotoStoreTest will no longer crash, so let's
merge it now and take care of the failing test later.
Change-Id: I935f76acee3c2de99030c62e14f43de07074fb8a
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index 13ec9b3..492701f 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -1250,17 +1250,6 @@
private HashMap<String, ArrayList<GroupIdCacheEntry>> mGroupIdCache = Maps.newHashMap();
/**
- * Maximum dimension (height or width) of display photos. Larger images will be scaled
- * to fit.
- */
- private int mMaxDisplayPhotoDim;
-
- /**
- * Maximum dimension (height or width) of photo thumbnails.
- */
- private int mMaxThumbnailPhotoDim;
-
- /**
* Sub-provider for handling profile requests against the profile database.
*/
private ProfileProvider mProfileProvider;
@@ -1402,9 +1391,6 @@
StrictMode.setThreadPolicy(
new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build());
- mMaxThumbnailPhotoDim = PhotoProcessor.getMaxThumbnailSize();
- mMaxDisplayPhotoDim = PhotoProcessor.getMaxDisplayPhotoSize();
-
mFastScrollingIndexCache = new FastScrollingIndexCache(getContext());
mContactsHelper = getDatabaseHelper(getContext());
@@ -1825,12 +1811,19 @@
return mProfilePhotoStore;
}
- public int getMaxDisplayPhotoDim() {
- return mMaxDisplayPhotoDim;
+ /**
+ * Maximum dimension (height or width) of photo thumbnails.
+ */
+ public int getMaxThumbnailDim() {
+ return PhotoProcessor.getMaxThumbnailSize();
}
- public int getMaxThumbnailPhotoDim() {
- return mMaxThumbnailPhotoDim;
+ /**
+ * Maximum dimension (height or width) of display photos. Larger images will be scaled
+ * to fit.
+ */
+ public int getMaxDisplayPhotoDim() {
+ return PhotoProcessor.getMaxDisplayPhotoSize();
}
/* package */ NameSplitter getNameSplitter() {
@@ -2727,7 +2720,7 @@
// Process the photo and store it.
try {
long photoFileId = mPhotoStore.get().insert(new PhotoProcessor(photoBytes,
- mMaxDisplayPhotoDim, mMaxThumbnailPhotoDim, true), true);
+ getMaxDisplayPhotoDim(), getMaxThumbnailDim(), true), true);
if (photoFileId != 0) {
values.put(StreamItemPhotos.PHOTO_FILE_ID, photoFileId);
values.remove(StreamItemPhotos.PHOTO);
@@ -5311,7 +5304,7 @@
case PHOTO_DIMENSIONS: {
return buildSingleRowResult(projection,
new String[] {DisplayPhoto.DISPLAY_MAX_DIM, DisplayPhoto.THUMBNAIL_MAX_DIM},
- new Object[] {mMaxDisplayPhotoDim, mMaxThumbnailPhotoDim});
+ new Object[] {getMaxDisplayPhotoDim(), getMaxThumbnailDim()});
}
case PHONES:
@@ -7378,8 +7371,8 @@
Bitmap b = BitmapFactory.decodeStream(is);
if (b != null) {
waitForAccess(mWriteAccessLatch);
- PhotoProcessor processor = new PhotoProcessor(b, mMaxDisplayPhotoDim,
- mMaxThumbnailPhotoDim);
+ PhotoProcessor processor = new PhotoProcessor(b, getMaxDisplayPhotoDim(),
+ getMaxThumbnailDim());
// Store the compressed photo in the photo store.
PhotoStore photoStore = ContactsContract.isProfileId(mRawContactId)
diff --git a/src/com/android/providers/contacts/PhotoProcessor.java b/src/com/android/providers/contacts/PhotoProcessor.java
index 985e2fd..cf81ff3 100644
--- a/src/com/android/providers/contacts/PhotoProcessor.java
+++ b/src/com/android/providers/contacts/PhotoProcessor.java
@@ -43,6 +43,23 @@
/** Compression for thumbnails that also have a display photo */
private static final int COMPRESSION_THUMBNAIL_LOW = 90;
+ private static int sMaxThumbnailDim;
+ private static int sMaxDisplayPhotoDim;
+
+ static {
+ final boolean isExpensiveDevice =
+ MemoryUtils.getTotalMemorySize() >= PhotoSizes.LARGE_RAM_THRESHOLD;
+
+ sMaxThumbnailDim = SystemProperties.getInt(
+ PhotoSizes.SYS_PROPERTY_THUMBNAIL_SIZE, PhotoSizes.DEFAULT_THUMBNAIL);
+
+ sMaxDisplayPhotoDim = SystemProperties.getInt(
+ PhotoSizes.SYS_PROPERTY_DISPLAY_PHOTO_SIZE,
+ isExpensiveDevice
+ ? PhotoSizes.DEFAULT_DISPLAY_PHOTO_LARGE_MEMORY
+ : PhotoSizes.DEFAULT_DISPLAY_PHOTO_MEMORY_CONSTRAINED);
+ }
+
/**
* The default sizes of a thumbnail/display picture. This is used in {@link #initialize()}
*/
@@ -260,8 +277,7 @@
* using a system-property)
*/
public static int getMaxThumbnailSize() {
- return SystemProperties.getInt(
- PhotoSizes.SYS_PROPERTY_THUMBNAIL_SIZE, PhotoSizes.DEFAULT_THUMBNAIL);
+ return sMaxThumbnailDim;
}
/**
@@ -269,14 +285,6 @@
* on available RAM or configured using a system-property)
*/
public static int getMaxDisplayPhotoSize() {
- final int sysPropDisplaySize =
- SystemProperties.getInt(PhotoSizes.SYS_PROPERTY_DISPLAY_PHOTO_SIZE, -1);
- if (sysPropDisplaySize != -1) return sysPropDisplaySize;
-
- final boolean isExpensiveDevice =
- MemoryUtils.getTotalMemorySize() >= PhotoSizes.LARGE_RAM_THRESHOLD;
- return isExpensiveDevice
- ? PhotoSizes.DEFAULT_DISPLAY_PHOTO_LARGE_MEMORY
- : PhotoSizes.DEFAULT_DISPLAY_PHOTO_MEMORY_CONSTRAINED;
+ return sMaxDisplayPhotoDim;
}
}
diff --git a/src/com/android/providers/contacts/aggregation/ContactAggregator.java b/src/com/android/providers/contacts/aggregation/ContactAggregator.java
index 60eba95..5209091 100644
--- a/src/com/android/providers/contacts/aggregation/ContactAggregator.java
+++ b/src/com/android/providers/contacts/aggregation/ContactAggregator.java
@@ -1942,7 +1942,7 @@
if (photoFileId == 0) {
// Assume standard thumbnail size. Don't bother getting a file size for priority;
// we should fall back to photo priority resolver if all we have are thumbnails.
- int thumbDim = mContactsProvider.getMaxThumbnailPhotoDim();
+ int thumbDim = mContactsProvider.getMaxThumbnailDim();
return new PhotoEntry(thumbDim * thumbDim, 0);
} else {
Cursor c = db.query(Tables.PHOTO_FILES, PhotoFileQuery.COLUMNS, PhotoFiles._ID + "=?",
diff --git a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
index 5539815..3402054 100644
--- a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
+++ b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
@@ -2244,7 +2244,7 @@
public void testLoadProfilePhoto() throws IOException {
long rawContactId = createBasicProfileContact(new ContentValues());
insertPhoto(rawContactId, R.drawable.earth_normal);
- assertInputStreamContent(
+ EvenMoreAsserts.assertImageRawData(
loadPhotoFromResource(R.drawable.earth_normal, PhotoSize.THUMBNAIL),
Contacts.openContactPhotoInputStream(mResolver, Profile.CONTENT_URI, false));
}
@@ -2252,7 +2252,7 @@
public void testLoadProfileDisplayPhoto() throws IOException {
long rawContactId = createBasicProfileContact(new ContentValues());
insertPhoto(rawContactId, R.drawable.earth_normal);
- assertInputStreamContent(
+ EvenMoreAsserts.assertImageRawData(
loadPhotoFromResource(R.drawable.earth_normal, PhotoSize.DISPLAY_PHOTO),
Contacts.openContactPhotoInputStream(mResolver, Profile.CONTENT_URI, true));
}
@@ -3831,8 +3831,8 @@
R.drawable.earth_normal, PhotoSize.DISPLAY_PHOTO);
while (c.moveToNext()) {
String photoUri = c.getString(1);
- assertInputStreamContent(expectedPhotoBytes,
- mResolver.openInputStream(Uri.parse(photoUri)));
+ EvenMoreAsserts.assertImageRawData(
+ expectedPhotoBytes, mResolver.openInputStream(Uri.parse(photoUri)));
}
} finally {
c.close();
@@ -3892,7 +3892,8 @@
// Check that the photo stored is the expected one.
String displayPhotoUri = getStoredValue(photoUri, StreamItemPhotos.PHOTO_URI);
- assertInputStreamContent(loadPhotoFromResource(R.drawable.nebula, PhotoSize.DISPLAY_PHOTO),
+ EvenMoreAsserts.assertImageRawData(
+ loadPhotoFromResource(R.drawable.nebula, PhotoSize.DISPLAY_PHOTO),
mResolver.openInputStream(Uri.parse(displayPhotoUri)));
}
@@ -3918,7 +3919,8 @@
// Check that the photo stored is the expected one.
String displayPhotoUri = getStoredValue(photoUri, StreamItemPhotos.PHOTO_URI);
- assertInputStreamContent(loadPhotoFromResource(R.drawable.nebula, PhotoSize.DISPLAY_PHOTO),
+ EvenMoreAsserts.assertImageRawData(
+ loadPhotoFromResource(R.drawable.nebula, PhotoSize.DISPLAY_PHOTO),
mResolver.openInputStream(Uri.parse(displayPhotoUri)));
}
@@ -5067,8 +5069,10 @@
assertStoredValues(photoLookupUriWithoutId, values);
// Try opening as an input stream.
- assertInputStreamContent(thumbnail, mResolver.openInputStream(photoLookupUriWithId));
- assertInputStreamContent(thumbnail, mResolver.openInputStream(photoLookupUriWithoutId));
+ EvenMoreAsserts.assertImageRawData(
+ thumbnail, mResolver.openInputStream(photoLookupUriWithId));
+ EvenMoreAsserts.assertImageRawData(
+ thumbnail, mResolver.openInputStream(photoLookupUriWithoutId));
}
public void testInputStreamForPhoto() throws Exception {
@@ -5079,25 +5083,12 @@
Uri photoUri = Uri.parse(getStoredValue(contactUri, Contacts.PHOTO_URI));
Uri photoThumbnailUri = Uri.parse(getStoredValue(contactUri, Contacts.PHOTO_THUMBNAIL_URI));
- assertInputStreamContent(loadTestPhoto(PhotoSize.DISPLAY_PHOTO),
+ EvenMoreAsserts.assertImageRawData(loadTestPhoto(PhotoSize.DISPLAY_PHOTO),
mResolver.openInputStream(photoUri));
- assertInputStreamContent(loadTestPhoto(PhotoSize.THUMBNAIL),
+ EvenMoreAsserts.assertImageRawData(loadTestPhoto(PhotoSize.THUMBNAIL),
mResolver.openInputStream(photoThumbnailUri));
}
- private static void assertInputStreamContent(byte[] expected, InputStream is)
- throws IOException {
- try {
- byte[] observed = new byte[expected.length];
- int count = is.read(observed);
- assertEquals(expected.length, count);
- assertEquals(-1, is.read());
- MoreAsserts.assertEquals(expected, observed);
- } finally {
- is.close();
- }
- }
-
public void testSuperPrimaryPhoto() {
long rawContactId1 = createRawContact(new Account("a", "a"));
Uri photoUri1 = insertPhoto(rawContactId1, R.drawable.earth_normal);
@@ -5206,7 +5197,7 @@
Uri photoUri = Contacts.CONTENT_URI.buildUpon()
.appendPath(String.valueOf(contactId))
.appendPath(Contacts.Photo.DISPLAY_PHOTO).build();
- assertInputStreamContent(
+ EvenMoreAsserts.assertImageRawData(
loadPhotoFromResource(R.drawable.earth_normal, PhotoSize.DISPLAY_PHOTO),
mResolver.openInputStream(photoUri));
}
@@ -5219,7 +5210,7 @@
Uri photoUri = Contacts.CONTENT_LOOKUP_URI.buildUpon()
.appendPath(lookupKey)
.appendPath(Contacts.Photo.DISPLAY_PHOTO).build();
- assertInputStreamContent(
+ EvenMoreAsserts.assertImageRawData(
loadPhotoFromResource(R.drawable.earth_normal, PhotoSize.DISPLAY_PHOTO),
mResolver.openInputStream(photoUri));
}
@@ -5233,7 +5224,7 @@
.appendPath(lookupKey)
.appendPath(String.valueOf(contactId))
.appendPath(Contacts.Photo.DISPLAY_PHOTO).build();
- assertInputStreamContent(
+ EvenMoreAsserts.assertImageRawData(
loadPhotoFromResource(R.drawable.earth_normal, PhotoSize.DISPLAY_PHOTO),
mResolver.openInputStream(photoUri));
}
@@ -5244,7 +5235,7 @@
Uri photoUri = RawContacts.CONTENT_URI.buildUpon()
.appendPath(String.valueOf(rawContactId))
.appendPath(RawContacts.DisplayPhoto.CONTENT_DIRECTORY).build();
- assertInputStreamContent(
+ EvenMoreAsserts.assertImageRawData(
loadPhotoFromResource(R.drawable.earth_normal, PhotoSize.DISPLAY_PHOTO),
mResolver.openInputStream(photoUri));
}
@@ -5258,7 +5249,7 @@
String photoUri = getStoredValue(
ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId),
Contacts.PHOTO_URI);
- assertInputStreamContent(
+ EvenMoreAsserts.assertImageRawData(
loadPhotoFromResource(R.drawable.earth_normal, PhotoSize.DISPLAY_PHOTO),
mResolver.openInputStream(Uri.parse(photoUri)));
}
@@ -5310,7 +5301,7 @@
photoUri);
// Loading the photo URI content should get the thumbnail.
- assertInputStreamContent(
+ EvenMoreAsserts.assertImageRawData(
loadPhotoFromResource(R.drawable.earth_small, PhotoSize.THUMBNAIL),
mResolver.openInputStream(Uri.parse(photoUri)));
}
@@ -5347,10 +5338,10 @@
assertNotSame(photoUri, thumbnailUri);
// Check the content of the display photo and thumbnail.
- assertInputStreamContent(
+ EvenMoreAsserts.assertImageRawData(
loadPhotoFromResource(R.drawable.earth_huge, PhotoSize.DISPLAY_PHOTO),
mResolver.openInputStream(Uri.parse(photoUri)));
- assertInputStreamContent(
+ EvenMoreAsserts.assertImageRawData(
loadPhotoFromResource(R.drawable.earth_huge, PhotoSize.THUMBNAIL),
mResolver.openInputStream(Uri.parse(thumbnailUri)));
}
@@ -5385,10 +5376,10 @@
String hugeEarthThumbnailUri = getStoredValue(
ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId),
Contacts.PHOTO_THUMBNAIL_URI);
- assertInputStreamContent(
+ EvenMoreAsserts.assertImageRawData(
loadPhotoFromResource(R.drawable.earth_huge, PhotoSize.DISPLAY_PHOTO),
mResolver.openInputStream(Uri.parse(hugeEarthPhotoUri)));
- assertInputStreamContent(
+ EvenMoreAsserts.assertImageRawData(
loadPhotoFromResource(R.drawable.earth_huge, PhotoSize.THUMBNAIL),
mResolver.openInputStream(Uri.parse(hugeEarthThumbnailUri)));
@@ -5590,7 +5581,8 @@
assertEquals(photoUri, thumbnailUri);
// Retrieving the photo URI should get the thumbnail content.
- assertInputStreamContent(loadPhotoFromResource(R.drawable.earth_small, PhotoSize.THUMBNAIL),
+ EvenMoreAsserts.assertImageRawData(
+ loadPhotoFromResource(R.drawable.earth_small, PhotoSize.THUMBNAIL),
mResolver.openInputStream(Uri.parse(photoUri)));
}
diff --git a/tests/src/com/android/providers/contacts/EvenMoreAsserts.java b/tests/src/com/android/providers/contacts/EvenMoreAsserts.java
index 857975b..8d81d67 100644
--- a/tests/src/com/android/providers/contacts/EvenMoreAsserts.java
+++ b/tests/src/com/android/providers/contacts/EvenMoreAsserts.java
@@ -16,6 +16,13 @@
package com.android.providers.contacts;
+import android.graphics.BitmapFactory;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+
import junit.framework.Assert;
/**
@@ -51,4 +58,41 @@
private static String appendUserMessage(String errorMsg, String userMsg) {
return userMsg == null ? errorMsg : errorMsg + userMsg;
}
+
+ public static void assertImageRawData(byte[] expected, InputStream actualStream)
+ throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ final byte[] buffer = new byte[4096];
+ int count;
+ while ((count = actualStream.read(buffer)) != -1) {
+ baos.write(buffer, 0, count);
+ }
+
+ assertImageRawData(expected, baos.toByteArray());
+ }
+
+ public static void assertImageRawData(byte[] expected, byte[] actual) {
+ String failReason = null;
+ if (expected.length != actual.length) {
+ failReason = "Different data lengths:" +
+ " expected=" + expected.length + " actual=" + actual.length;
+ } else if (!Arrays.equals(expected, actual)) {
+ failReason = "Different data:";
+ }
+ if (failReason == null) {
+ return;
+ }
+ // Length or hashCode is different. We'll fail, but put the dimensions in the message.
+ Assert.fail(failReason + ", expected dimentions=" + getImageDimensions(expected) +
+ " actual dimentions=" + getImageDimensions(actual));
+ }
+
+ private static final String getImageDimensions(byte[] imageData) {
+ BitmapFactory.Options o = new BitmapFactory.Options();
+ o.inJustDecodeBounds = true;
+ BitmapFactory.decodeByteArray(imageData, 0, imageData.length, o);
+
+ return "[" + o.outWidth + " x " + o.outHeight + "]";
+ }
}
diff --git a/tests/src/com/android/providers/contacts/PhotoLoadingTestCase.java b/tests/src/com/android/providers/contacts/PhotoLoadingTestCase.java
index 3b7bfc4..20058ad 100644
--- a/tests/src/com/android/providers/contacts/PhotoLoadingTestCase.java
+++ b/tests/src/com/android/providers/contacts/PhotoLoadingTestCase.java
@@ -44,9 +44,7 @@
Map<PhotoSize, byte[]> photoMap = Maps.newHashMap();
public PhotoEntry(byte[] original) {
try {
- PhotoProcessor processor = new PhotoProcessor(original,
- PhotoProcessor.getMaxDisplayPhotoSize(),
- PhotoProcessor.getMaxThumbnailSize());
+ PhotoProcessor processor = newPhotoProcessor(original, false);
photoMap.put(PhotoSize.ORIGINAL, original);
photoMap.put(PhotoSize.DISPLAY_PHOTO, processor.getDisplayPhotoBytes());
photoMap.put(PhotoSize.THUMBNAIL, processor.getThumbnailPhotoBytes());
@@ -63,6 +61,16 @@
// The test photo will be loaded frequently in tests, so we'll just process it once.
private static PhotoEntry testPhotoEntry;
+ /**
+ * Create a new {@link PhotoProcessor} for unit tests.
+ *
+ * The instance generated here is always configured for 256x256 regardless of the
+ * device memory size.
+ */
+ protected PhotoProcessor newPhotoProcessor(byte[] data, boolean forceCropToSquare)
+ throws IOException {
+ return new PhotoProcessor(data, 256, 96, forceCropToSquare);
+ }
protected byte[] loadTestPhoto() {
int testPhotoId = com.android.providers.contacts.tests.R.drawable.ic_contact_picture;
diff --git a/tests/src/com/android/providers/contacts/PhotoStoreTest.java b/tests/src/com/android/providers/contacts/PhotoStoreTest.java
index 6946aae..8b8abe8 100644
--- a/tests/src/com/android/providers/contacts/PhotoStoreTest.java
+++ b/tests/src/com/android/providers/contacts/PhotoStoreTest.java
@@ -29,6 +29,7 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -70,7 +71,7 @@
byte[] photo = loadPhotoFromResource(R.drawable.earth_small, PhotoSize.ORIGINAL);
// Since the photo is already thumbnail-sized, no file will be stored.
- assertEquals(0, mPhotoStore.insert(new PhotoProcessor(photo, 256, 96)));
+ assertEquals(0, mPhotoStore.insert(newPhotoProcessor(photo, false)));
}
public void testStore200Photo() throws IOException {
@@ -96,14 +97,17 @@
}
public void testStoreMediumPhoto() throws IOException {
+ // Source Image is 256x256
runStorageTestForResource(R.drawable.earth_normal, 256, 256);
}
public void testStoreLargePhoto() throws IOException {
+ // Source image is 512x512
runStorageTestForResource(R.drawable.earth_large, 256, 256);
}
public void testStoreHugePhoto() throws IOException {
+ // Source image is 1024x1024
runStorageTestForResource(R.drawable.earth_huge, 256, 256);
}
@@ -125,15 +129,16 @@
public void runStorageTestForResource(int resourceId, int expectedWidth,
int expectedHeight) throws IOException {
byte[] photo = loadPhotoFromResource(resourceId, PhotoSize.ORIGINAL);
- long photoFileId = mPhotoStore.insert(new PhotoProcessor(photo, 256, 96));
+ long photoFileId = mPhotoStore.insert(newPhotoProcessor(photo, false));
assertTrue(photoFileId != 0);
- byte[] expectedStoredVersion = loadPhotoFromResource(resourceId, PhotoSize.DISPLAY_PHOTO);
File storedFile = new File(mPhotoStore.get(photoFileId).path);
assertTrue(storedFile.exists());
- byte[] storedVersion = readInputStreamFully(new FileInputStream(storedFile));
- assertEquals(Hex.encodeHex(expectedStoredVersion, false),
- Hex.encodeHex(storedVersion, false));
+ byte[] actualStoredVersion = readInputStreamFully(new FileInputStream(storedFile));
+
+ byte[] expectedStoredVersion = loadPhotoFromResource(resourceId, PhotoSize.DISPLAY_PHOTO);
+
+ EvenMoreAsserts.assertImageRawData(expectedStoredVersion, actualStoredVersion);
Cursor c = mDb.query(Tables.PHOTO_FILES,
new String[]{PhotoFiles.WIDTH, PhotoFiles.HEIGHT, PhotoFiles.FILESIZE},
@@ -153,7 +158,7 @@
public void runStorageTestForResourceWithCrop(int resourceId, int expectedWidth,
int expectedHeight) throws IOException {
byte[] photo = loadPhotoFromResource(resourceId, PhotoSize.ORIGINAL);
- long photoFileId = mPhotoStore.insert(new PhotoProcessor(photo, 256, 96, true));
+ long photoFileId = mPhotoStore.insert(newPhotoProcessor(photo, true));
assertTrue(photoFileId != 0);
Cursor c = mDb.query(Tables.PHOTO_FILES,
@@ -170,7 +175,7 @@
public void testRemoveEntry() throws IOException {
byte[] photo = loadPhotoFromResource(R.drawable.earth_normal, PhotoSize.ORIGINAL);
- long photoFileId = mPhotoStore.insert(new PhotoProcessor(photo, 256, 96));
+ long photoFileId = mPhotoStore.insert(newPhotoProcessor(photo, false));
PhotoStore.Entry entry = mPhotoStore.get(photoFileId);
assertTrue(new File(entry.path).exists());
diff --git a/tests/src/com/android/providers/contacts/SynchronousContactsProvider2.java b/tests/src/com/android/providers/contacts/SynchronousContactsProvider2.java
index c85fded..3d28ad1 100644
--- a/tests/src/com/android/providers/contacts/SynchronousContactsProvider2.java
+++ b/tests/src/com/android/providers/contacts/SynchronousContactsProvider2.java
@@ -106,6 +106,18 @@
return true;
}
+ /** We'll use a static size for unit tests */
+ @Override
+ public int getMaxThumbnailDim() {
+ return 96;
+ }
+
+ /** We'll use a static size for unit tests */
+ @Override
+ public int getMaxDisplayPhotoDim() {
+ return 256;
+ }
+
@Override
protected void scheduleBackgroundTask(int task) {
performBackgroundTask(task, null);