1b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williamspackage com.xtremelabs.robolectric.shadows; 2b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams 3b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williamsimport android.graphics.Bitmap; 4b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williamsimport android.graphics.BitmapFactory; 520b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williamsimport android.net.Uri; 620b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williamsimport android.provider.MediaStore; 7b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williamsimport com.xtremelabs.robolectric.R; 8b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williamsimport com.xtremelabs.robolectric.Robolectric; 9b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williamsimport com.xtremelabs.robolectric.WithTestDefaultsRunner; 10b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williamsimport org.junit.Test; 11b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williamsimport org.junit.runner.RunWith; 12b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams 1320b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williamsimport java.io.InputStream; 1420b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams 15b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williamsimport static com.xtremelabs.robolectric.Robolectric.shadowOf; 16b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williamsimport static org.junit.Assert.assertEquals; 17b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams 18b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams@RunWith(WithTestDefaultsRunner.class) 19b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williamspublic class BitmapFactoryTest { 20b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams @Test 21b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams public void decodeResource_shouldSetDescription() throws Exception { 22b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams Bitmap bitmap = BitmapFactory.decodeResource(Robolectric.application.getResources(), R.drawable.an_image); 2322ae0c422c4f1bb6878f624fbf2531eea4da0187Christian Williams & Phil Goodwin assertEquals("Bitmap for resource:drawable/an_image", shadowOf(bitmap).getDescription()); 24b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams assertEquals(100, bitmap.getWidth()); 25b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams assertEquals(100, bitmap.getHeight()); 26b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams } 27b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams 28b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams @Test 29fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen public void decodeResourceWithOpts_shouldSetDescription() throws Exception { 30fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen BitmapFactory.Options opts = new BitmapFactory.Options(); 31fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen Bitmap bitmap = BitmapFactory.decodeResource(Robolectric.application.getResources(), R.drawable.an_image, opts); 32fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen assertEquals("Bitmap for resource:drawable/an_image", shadowOf(bitmap).getDescription()); 33fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen assertEquals(100, bitmap.getWidth()); 34fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen assertEquals(100, bitmap.getHeight()); 35fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen assertEquals(100, opts.outWidth); 36fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen assertEquals(100, opts.outHeight); 37fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen } 38fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen 39fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen @Test 40b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams public void decodeFile_shouldSetDescription() throws Exception { 41b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams Bitmap bitmap = BitmapFactory.decodeFile("/some/file.jpg"); 4222ae0c422c4f1bb6878f624fbf2531eea4da0187Christian Williams & Phil Goodwin assertEquals("Bitmap for file:/some/file.jpg", shadowOf(bitmap).getDescription()); 43b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams assertEquals(100, bitmap.getWidth()); 44b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams assertEquals(100, bitmap.getHeight()); 45b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams } 4620b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams 4720b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams @Test 4820b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams public void decodeStream_shouldSetDescription() throws Exception { 4920b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams InputStream inputStream = Robolectric.application.getContentResolver().openInputStream(Uri.parse("content:/path")); 5020b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams Bitmap bitmap = BitmapFactory.decodeStream(inputStream); 5122ae0c422c4f1bb6878f624fbf2531eea4da0187Christian Williams & Phil Goodwin assertEquals("Bitmap for content:/path", shadowOf(bitmap).getDescription()); 5220b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams assertEquals(100, bitmap.getWidth()); 5320b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams assertEquals(100, bitmap.getHeight()); 5420b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams } 5520b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams 5620b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams @Test 5720b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams public void decodeResource_shouldGetWidthAndHeightFromHints() throws Exception { 5820b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams ShadowBitmapFactory.provideWidthAndHeightHints(R.drawable.an_image, 123, 456); 5920b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams 6020b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams Bitmap bitmap = BitmapFactory.decodeResource(Robolectric.application.getResources(), R.drawable.an_image); 6122ae0c422c4f1bb6878f624fbf2531eea4da0187Christian Williams & Phil Goodwin assertEquals("Bitmap for resource:drawable/an_image", shadowOf(bitmap).getDescription()); 6220b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams assertEquals(123, bitmap.getWidth()); 6320b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams assertEquals(456, bitmap.getHeight()); 6420b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams } 6520b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams 6620b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams @Test 67fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen public void decodeResourceWithOpts_shouldGetWidthAndHeightFromHints() throws Exception { 68fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen ShadowBitmapFactory.provideWidthAndHeightHints(R.drawable.an_image, 123, 456); 69fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen 70fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen BitmapFactory.Options opts = new BitmapFactory.Options(); 71fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen Bitmap bitmap = BitmapFactory.decodeResource(Robolectric.application.getResources(), R.drawable.an_image, opts); 72fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen assertEquals("Bitmap for resource:drawable/an_image", shadowOf(bitmap).getDescription()); 73fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen assertEquals(123, bitmap.getWidth()); 74fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen assertEquals(456, bitmap.getHeight()); 75fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen assertEquals(123, opts.outWidth); 76fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen assertEquals(456, opts.outHeight); 77fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen } 78fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen 79fde330c24db2b7905368ac9d790787f250f7ecc7Jon Boekenoogen @Test 8028a0206132c83dce73d0bcf64a3992cf5212b821Jessica Chen public void decodeResource_canTakeOptions() throws Exception { 8128a0206132c83dce73d0bcf64a3992cf5212b821Jessica Chen BitmapFactory.Options options = new BitmapFactory.Options(); 8228a0206132c83dce73d0bcf64a3992cf5212b821Jessica Chen options.inSampleSize = 100; 8328a0206132c83dce73d0bcf64a3992cf5212b821Jessica Chen Bitmap bitmap = BitmapFactory.decodeResource(Robolectric.application.getResources(), R.drawable.an_image, options); 8428a0206132c83dce73d0bcf64a3992cf5212b821Jessica Chen assertEquals(true, shadowOf(bitmap).getDescription().contains("inSampleSize=100")); 8528a0206132c83dce73d0bcf64a3992cf5212b821Jessica Chen } 8628a0206132c83dce73d0bcf64a3992cf5212b821Jessica Chen 8728a0206132c83dce73d0bcf64a3992cf5212b821Jessica Chen @Test 8820b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams public void decodeFile_shouldGetWidthAndHeightFromHints() throws Exception { 8920b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams ShadowBitmapFactory.provideWidthAndHeightHints("/some/file.jpg", 123, 456); 9020b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams 9120b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams Bitmap bitmap = BitmapFactory.decodeFile("/some/file.jpg"); 9222ae0c422c4f1bb6878f624fbf2531eea4da0187Christian Williams & Phil Goodwin assertEquals("Bitmap for file:/some/file.jpg", shadowOf(bitmap).getDescription()); 9320b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams assertEquals(123, bitmap.getWidth()); 9420b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams assertEquals(456, bitmap.getHeight()); 9520b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams } 9620b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams 9720b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams @Test 9820b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams public void decodeFileEtc_shouldSetOptionsOutWidthAndOutHeightFromHints() throws Exception { 9920b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams ShadowBitmapFactory.provideWidthAndHeightHints("/some/file.jpg", 123, 456); 10020b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams 10120b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams BitmapFactory.Options options = new BitmapFactory.Options(); 10220b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams BitmapFactory.decodeFile("/some/file.jpg", options); 10320b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams assertEquals(123, options.outWidth); 10420b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams assertEquals(456, options.outHeight); 10520b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams } 10620b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams 10720b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams @Test 10820b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams public void decodeUri_shouldGetWidthAndHeightFromHints() throws Exception { 10920b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams ShadowBitmapFactory.provideWidthAndHeightHints(Uri.parse("content:/path"), 123, 456); 11020b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams 11120b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams Bitmap bitmap = MediaStore.Images.Media.getBitmap(Robolectric.application.getContentResolver(), Uri.parse("content:/path")); 11222ae0c422c4f1bb6878f624fbf2531eea4da0187Christian Williams & Phil Goodwin assertEquals("Bitmap for content:/path", shadowOf(bitmap).getDescription()); 11320b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams assertEquals(123, bitmap.getWidth()); 11420b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams assertEquals(456, bitmap.getHeight()); 11520b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams } 11620b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams 11720b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams @Test 11820b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams public void decodeStream_shouldGetWidthAndHeightFromHints() throws Exception { 11922ae0c422c4f1bb6878f624fbf2531eea4da0187Christian Williams & Phil Goodwin ShadowBitmapFactory.provideWidthAndHeightHints(Uri.parse("content:/path"), 123, 456); 12020b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams 12120b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams InputStream inputStream = Robolectric.application.getContentResolver().openInputStream(Uri.parse("content:/path")); 12220b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams Bitmap bitmap = BitmapFactory.decodeStream(inputStream); 12322ae0c422c4f1bb6878f624fbf2531eea4da0187Christian Williams & Phil Goodwin assertEquals("Bitmap for content:/path", shadowOf(bitmap).getDescription()); 12420b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams assertEquals(123, bitmap.getWidth()); 12520b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams assertEquals(456, bitmap.getHeight()); 12620b94927aff24d7bd975d6ee717f1b65da9ee7c1Josh Lauer & Christian Williams } 127b01474a3329222965d31068f5c33e59c6e6aa6a4Josh Lauer & Christian Williams} 128