ResourcesTest.java revision e07511e1e736d9deba522ab8d58ffabcc67d274b
133873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultzpackage com.xtremelabs.robolectric.shadows; 2b63effe7b28319e0430f0baa9b8d1b8ddd3ff307Christian Williams & Phil Goodwin 3b63effe7b28319e0430f0baa9b8d1b8ddd3ff307Christian Williams & Phil Goodwinimport android.app.Activity; 485af7906879a68c99b1878dac22605fa32454f3fRich Humphreyimport android.content.res.Configuration; 5b63effe7b28319e0430f0baa9b8d1b8ddd3ff307Christian Williams & Phil Goodwinimport android.content.res.Resources; 63cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowhamimport android.graphics.drawable.AnimationDrawable; 73cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowhamimport android.graphics.drawable.BitmapDrawable; 83cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowhamimport android.graphics.drawable.ColorDrawable; 93cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowhamimport com.xtremelabs.robolectric.Robolectric; 103cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowhamimport com.xtremelabs.robolectric.WithTestDefaultsRunner; 113cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowhamimport com.xtremelabs.robolectric.util.TestR; 129befb81f62e506f2afee9bf4bc4cd2da5c4f9f20Joe Moore and Tyler Schultzimport org.junit.Before; 139befb81f62e506f2afee9bf4bc4cd2da5c4f9f20Joe Moore and Tyler Schultzimport org.junit.Test; 149befb81f62e506f2afee9bf4bc4cd2da5c4f9f20Joe Moore and Tyler Schultzimport org.junit.runner.RunWith; 159befb81f62e506f2afee9bf4bc4cd2da5c4f9f20Joe Moore and Tyler Schultz 16e02d2608f3fa739dd328c6b44a2122b9dfb73bedLowell Kirsh & Ryan Richardimport static com.xtremelabs.robolectric.Robolectric.shadowOf; 17e07511e1e736d9deba522ab8d58ffabcc67d274bRick Kawala & Wei Wuimport static org.hamcrest.CoreMatchers.equalTo; 18e07511e1e736d9deba522ab8d58ffabcc67d274bRick Kawala & Wei Wuimport static org.hamcrest.CoreMatchers.instanceOf; 19e07511e1e736d9deba522ab8d58ffabcc67d274bRick Kawala & Wei Wuimport static org.hamcrest.CoreMatchers.is; 20e07511e1e736d9deba522ab8d58ffabcc67d274bRick Kawala & Wei Wuimport static org.hamcrest.CoreMatchers.notNullValue; 219befb81f62e506f2afee9bf4bc4cd2da5c4f9f20Joe Moore and Tyler Schultzimport static org.junit.Assert.assertThat; 227f306c7c98e32f85115ce57780a6752477b8faadadriancowham 23b63effe7b28319e0430f0baa9b8d1b8ddd3ff307Christian Williams & Phil Goodwin 2407257335f88da163910cc0bd039e6163edc38580Gregg Van Hove & Phil Goodwin@RunWith(WithTestDefaultsRunner.class) 25b63effe7b28319e0430f0baa9b8d1b8ddd3ff307Christian Williams & Phil Goodwinpublic class ResourcesTest { 2640c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams 273cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham private Resources resources; 283cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham private ShadowContextWrapper shadowApp; 293cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham 303cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham @Before 313cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham public void setup() { 323cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham resources = new Activity().getResources(); 337f306c7c98e32f85115ce57780a6752477b8faadadriancowham shadowApp = shadowOf( Robolectric.application ); 343cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham } 353cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham 36b63effe7b28319e0430f0baa9b8d1b8ddd3ff307Christian Williams & Phil Goodwin @Test(expected = Resources.NotFoundException.class) 37b63effe7b28319e0430f0baa9b8d1b8ddd3ff307Christian Williams & Phil Goodwin public void getStringArray_shouldThrowExceptionIfNotFound() throws Exception { 383cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham resources.getStringArray(-1); 39b63effe7b28319e0430f0baa9b8d1b8ddd3ff307Christian Williams & Phil Goodwin } 4040c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams 41018b9355a9aba61f0c47bc438e2aedd63932a05aMichael Portuesi @Test 42018b9355a9aba61f0c47bc438e2aedd63932a05aMichael Portuesi public void testConfiguration() { 433cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham Configuration configuration = resources.getConfiguration(); 4485af7906879a68c99b1878dac22605fa32454f3fRich Humphrey assertThat(configuration, notNullValue()); 4585af7906879a68c99b1878dac22605fa32454f3fRich Humphrey assertThat(configuration.locale, notNullValue()); 46018b9355a9aba61f0c47bc438e2aedd63932a05aMichael Portuesi } 47ec63d3ad017965dc341bd0ce15f07c65f35b4a90Christian Williams 48ec63d3ad017965dc341bd0ce15f07c65f35b4a90Christian Williams @Test 499befb81f62e506f2afee9bf4bc4cd2da5c4f9f20Joe Moore and Tyler Schultz public void testConfigurationReturnsTheSameInstance() { 509befb81f62e506f2afee9bf4bc4cd2da5c4f9f20Joe Moore and Tyler Schultz assertThat(resources.getConfiguration(), is(resources.getConfiguration())); 51018b9355a9aba61f0c47bc438e2aedd63932a05aMichael Portuesi } 52ec63d3ad017965dc341bd0ce15f07c65f35b4a90Christian Williams 53ec63d3ad017965dc341bd0ce15f07c65f35b4a90Christian Williams @Test 54ec63d3ad017965dc341bd0ce15f07c65f35b4a90Christian Williams public void testNewTheme() { 553cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham assertThat(resources.newTheme(), notNullValue()); 563cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham } 573cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham 583cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham /** 593cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham * a missing R.class will result in an BitmapDrawable getting returned 603cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham * by default 613cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham */ 623cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham @Test 633cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham public void testGetDrawableNullRClass() { 643cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham shadowApp.getResourceLoader().setLocalRClass( null ); 653cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham assertThat( resources.getDrawable( TestR.anim.test_anim_1 ), instanceOf( BitmapDrawable.class ) ); 663cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham } 673cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham 683cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham /** 693cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham * given an R.anim.id value, will return an AnimationDrawable 703cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham */ 713cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham @Test 723cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham public void testGetAnimationDrawable() { 733cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham shadowApp.getResourceLoader().setLocalRClass( TestR.class ); 743cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham assertThat( resources.getDrawable( TestR.anim.test_anim_1 ), instanceOf( AnimationDrawable.class ) ); 753cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham } 763cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham 773cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham /** 783cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham * given an R.color.id value, will return a ColorDrawable 793cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham */ 803cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham @Test 813cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham public void testGetColorDrawable() { 823cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham shadowApp.getResourceLoader().setLocalRClass( TestR.class ); 833cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham assertThat( resources.getDrawable( TestR.color.test_color_1 ), instanceOf( ColorDrawable.class ) ); 843cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham } 853cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham 863cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham /** 873cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham * given an R.drawable.id value, will return a BitmapDrawable 883cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham */ 893cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham @Test 903cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham public void testGetBitmapDrawable() { 913cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham shadowApp.getResourceLoader().setLocalRClass( TestR.class ); 923cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham assertThat( resources.getDrawable( TestR.drawable.test_drawable_1 ), instanceOf( BitmapDrawable.class ) ); 933cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham } 943cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham 953cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham /** 963cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham * given a value that doesn't in one of R's inner classes, will return a BitmapDrawable 973cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham */ 983cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham @Test 993cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham public void testGetBitmapDrawableForUnknownId() { 1003cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham shadowApp.getResourceLoader().setLocalRClass( TestR.class ); 1013cebac0de0691c6f27dbdd441cf78cbf8623eddfadriancowham assertThat( resources.getDrawable( Integer.MAX_VALUE ), instanceOf( BitmapDrawable.class ) ); 102ec63d3ad017965dc341bd0ce15f07c65f35b4a90Christian Williams } 103e02d2608f3fa739dd328c6b44a2122b9dfb73bedLowell Kirsh & Ryan Richard @Test 104e02d2608f3fa739dd328c6b44a2122b9dfb73bedLowell Kirsh & Ryan Richard public void testDensity() { 105e02d2608f3fa739dd328c6b44a2122b9dfb73bedLowell Kirsh & Ryan Richard Activity activity = new Activity(); 106e02d2608f3fa739dd328c6b44a2122b9dfb73bedLowell Kirsh & Ryan Richard assertThat(activity.getResources().getDisplayMetrics().density, equalTo(1f)); 107e02d2608f3fa739dd328c6b44a2122b9dfb73bedLowell Kirsh & Ryan Richard 108e02d2608f3fa739dd328c6b44a2122b9dfb73bedLowell Kirsh & Ryan Richard shadowOf(activity.getResources()).setDensity(1.5f); 109e02d2608f3fa739dd328c6b44a2122b9dfb73bedLowell Kirsh & Ryan Richard assertThat(activity.getResources().getDisplayMetrics().density, equalTo(1.5f)); 110e02d2608f3fa739dd328c6b44a2122b9dfb73bedLowell Kirsh & Ryan Richard 111e02d2608f3fa739dd328c6b44a2122b9dfb73bedLowell Kirsh & Ryan Richard Activity anotherActivity = new Activity(); 112e02d2608f3fa739dd328c6b44a2122b9dfb73bedLowell Kirsh & Ryan Richard assertThat(anotherActivity.getResources().getDisplayMetrics().density, equalTo(1.5f)); 113e02d2608f3fa739dd328c6b44a2122b9dfb73bedLowell Kirsh & Ryan Richard } 114e07511e1e736d9deba522ab8d58ffabcc67d274bRick Kawala & Wei Wu 115e07511e1e736d9deba522ab8d58ffabcc67d274bRick Kawala & Wei Wu @Test 116e07511e1e736d9deba522ab8d58ffabcc67d274bRick Kawala & Wei Wu public void displayMetricsShouldNotHaveLotsOfZeros() throws Exception { 117e07511e1e736d9deba522ab8d58ffabcc67d274bRick Kawala & Wei Wu Activity activity = new Activity(); 118e07511e1e736d9deba522ab8d58ffabcc67d274bRick Kawala & Wei Wu assertThat(activity.getResources().getDisplayMetrics().heightPixels, equalTo(800)); 119e07511e1e736d9deba522ab8d58ffabcc67d274bRick Kawala & Wei Wu assertThat(activity.getResources().getDisplayMetrics().widthPixels, equalTo(480)); 120e07511e1e736d9deba522ab8d58ffabcc67d274bRick Kawala & Wei Wu } 121b63effe7b28319e0430f0baa9b8d1b8ddd3ff307Christian Williams & Phil Goodwin} 122