1 package com.xtremelabs.robolectric.res; 2 3 import android.graphics.Color; 4 import com.xtremelabs.robolectric.R; 5 import org.junit.Before; 6 import org.junit.Test; 7 8 import static com.xtremelabs.robolectric.util.TestUtil.getSystemResourceDir; 9 import static com.xtremelabs.robolectric.util.TestUtil.resourceFile; 10 import static org.hamcrest.CoreMatchers.equalTo; 11 import static org.junit.Assert.assertThat; 12 13 public class ColorResourceLoaderTest { 14 private ColorResourceLoader colorResourceLoader; 15 16 @Before public void setUp() throws Exception { 17 ResourceExtractor resourceExtractor = new ResourceExtractor(); 18 resourceExtractor.addLocalRClass(R.class); 19 resourceExtractor.addSystemRClass(android.R.class); 20 colorResourceLoader = new ColorResourceLoader(resourceExtractor); 21 new DocumentLoader(colorResourceLoader).loadResourceXmlDir(resourceFile("res", "values")); 22 new DocumentLoader(colorResourceLoader).loadSystemResourceXmlDir(getSystemResourceDir("values")); 23 } 24 25 @Test 26 public void shouldHandleNonColorResourcesWithoutCrashing() throws Exception { 27 assertThat(colorResourceLoader.getValue(R.drawable.l0_red), equalTo(-0x000001)); 28 } 29 30 @Test 31 public void testStringsAreResolved() throws Exception { 32 assertThat(colorResourceLoader.getValue(R.color.black), equalTo(0x000000)); 33 assertThat(colorResourceLoader.getValue(R.color.white), equalTo(0xffffff)); 34 } 35 36 @Test 37 public void shouldHandleColorsWithAlpha() throws Exception { 38 assertThat(colorResourceLoader.getValue(R.color.clear), equalTo(0x000001)); 39 } 40 41 @Test 42 public void shouldHandleColorForwardReferences() throws Exception { 43 assertThat(colorResourceLoader.getValue(R.color.foreground), equalTo(0xf5f5f5)); 44 } 45 46 @Test 47 public void shouldHandleColorBackwardReferences() throws Exception { 48 assertThat(colorResourceLoader.getValue(R.color.background), equalTo(0xf5f5f5)); 49 } 50 51 @Test 52 public void shouldLoadColorsWithAlpha() throws Exception { 53 assertThat(colorResourceLoader.getValue(R.color.color_with_alpha), equalTo(0x802C76AD)); 54 } 55 56 @Test 57 public void shouldReturnAndroidColors() throws Exception { 58 assertThat(colorResourceLoader.getValue(android.R.color.black), equalTo(Color.BLACK)); 59 } 60 61 @Test 62 public void shouldSupportCarrierDefinedColors() throws Exception { 63 assertThat(colorResourceLoader.getValue(android.R.color.background_dark), equalTo(0xFF000000)); 64 } 65 66 @Test 67 public void shouldParseAndroidColorReferences() throws Exception { 68 assertThat(colorResourceLoader.getValue(R.color.android_namespaced_black), equalTo(Color.BLACK)); 69 } 70 71 @Test 72 public void shouldParseSimpleAndroidColorReferences() throws Exception { 73 assertThat(colorResourceLoader.getValue(R.color.android_red), equalTo(Color.RED)); 74 } 75 } 76