• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.robolectric.res;
2 
3 import static com.google.common.truth.Truth.assertThat;
4 import static java.util.Arrays.asList;
5 
6 import org.junit.Test;
7 import org.junit.runner.RunWith;
8 import org.junit.runners.JUnit4;
9 
10 @RunWith(JUnit4.class)
11 public class StyleDataTest {
12 
13   private final ResName androidSearchViewStyle = new ResName("android", "attr", "searchViewStyle");
14   private final ResName myLibSearchViewStyle = new ResName("library.resource", "attr", "searchViewStyle");
15   private final ResName myAppSearchViewStyle = new ResName("my.app", "attr", "searchViewStyle");
16 
17   @Test
getAttrValue_willFindLibraryResourcesWithSameName()18   public void getAttrValue_willFindLibraryResourcesWithSameName() {
19     StyleData styleData = new StyleData("library.resource", "Theme_MyApp", "Theme_Material", asList(
20         new AttributeResource(myLibSearchViewStyle, "lib_value", "library.resource")
21     ));
22 
23     assertThat(styleData.getAttrValue(myAppSearchViewStyle).value).isEqualTo("lib_value");
24     assertThat(styleData.getAttrValue(myLibSearchViewStyle).value).isEqualTo("lib_value");
25 
26     assertThat(styleData.getAttrValue(androidSearchViewStyle)).isNull();
27   }
28 
29   @Test
getAttrValue_willNotFindFrameworkResourcesWithSameName()30   public void getAttrValue_willNotFindFrameworkResourcesWithSameName() {
31     StyleData styleData = new StyleData("android", "Theme_Material", "Theme", asList(
32         new AttributeResource(androidSearchViewStyle, "android_value", "android")
33     ));
34 
35     assertThat(styleData.getAttrValue(androidSearchViewStyle).value).isEqualTo("android_value");
36 
37     assertThat(styleData.getAttrValue(myAppSearchViewStyle)).isNull();
38     assertThat(styleData.getAttrValue(myLibSearchViewStyle)).isNull();
39   }
40 
41   @Test
getAttrValue_willChooseBetweenAmbiguousAttributes()42   public void getAttrValue_willChooseBetweenAmbiguousAttributes() {
43     StyleData styleData = new StyleData("android", "Theme_Material", "Theme", asList(
44         new AttributeResource(myLibSearchViewStyle, "lib_value", "library.resource"),
45         new AttributeResource(androidSearchViewStyle, "android_value", "android")
46     ));
47 
48     assertThat(styleData.getAttrValue(androidSearchViewStyle).value).isEqualTo("android_value");
49     assertThat(styleData.getAttrValue(myLibSearchViewStyle).value).isEqualTo("lib_value");
50 
51     // todo: any packageNames that aren't 'android' should be treated as equivalent
52 //    assertThat(styleData.getAttrValue(myAppSearchViewStyle).value).isEqualTo("lib_value");
53   }
54 
55   @Test
getAttrValue_willReturnTrimmedAttributeValues()56   public void getAttrValue_willReturnTrimmedAttributeValues() throws Exception {
57     StyleData styleData = new StyleData("library.resource", "Theme_MyApp", "Theme_Material", asList(
58             new AttributeResource(myLibSearchViewStyle, "\n lib_value ", "library.resource")
59     ));
60 
61     assertThat(styleData.getAttrValue(myAppSearchViewStyle).value).isEqualTo("\n lib_value ");
62     assertThat(styleData.getAttrValue(myLibSearchViewStyle).trimmedValue).isEqualTo("lib_value");
63   }
64 
65 }
66