@Override public void onEnd(XMLStreamReader xml, XmlContext xmlContext) throws XMLStreamException { resourceTable.addResource(attrType, name, new TypedResource<>(items, resType, xmlContext)); } }
@Override public void onEnd(XMLStreamReader xml, XmlContext xmlContext) throws XMLStreamException { ResType resType = scalarResType == null ? ResType.inferType(buf.toString()) : scalarResType; items.add(new TypedResource<>(buf.toString(), resType, xmlContext)); }
@Override public void onEnd(XMLStreamReader xml, XmlContext xmlContext) throws XMLStreamException { String s = buf.toString(); if (resType == ResType.CHAR_SEQUENCE) { s = StringResources.processStringResources(s); } else { s = s.trim(); } resourceTable.addResource(attrType, name, new TypedResource<>(s, resType, xmlContext)); } }
public StaxArrayLoader(PackageResourceTable resourceTable, String attrType, ResType arrayResType, final ResType scalarResType) { super(resourceTable, attrType, arrayResType); addHandler("item", new NodeHandler() { @Override public void onStart(XMLStreamReader xml, XmlContext xmlContext) throws XMLStreamException { buf.setLength(0); } @Override public void onCharacters(XMLStreamReader xml, XmlContext xmlContext) throws XMLStreamException { buf.append(xml.getText()); } @Override public void onEnd(XMLStreamReader xml, XmlContext xmlContext) throws XMLStreamException { ResType resType = scalarResType == null ? ResType.inferType(buf.toString()) : scalarResType; items.add(new TypedResource<>(buf.toString(), resType, xmlContext)); } @Override NodeHandler findMatchFor(XMLStreamReader xml) { return new TextCollectingNodeHandler(buf); } }); }
@Override public void onEnd(XMLStreamReader xml, XmlContext xmlContext) throws XMLStreamException { AttrData attrData = new AttrData(name, format, new ArrayList<>(pairs)); pairs.clear(); // xmlContext = xmlContext.withLineNumber(xml.getLocation().getLineNumber()); if (attrData.getFormat() != null) { resourceTable.addResource(attrType, name, new TypedResource<>(attrData, resType, xmlContext)); } } }
@Override public void onEnd(XMLStreamReader xml, XmlContext xmlContext) throws XMLStreamException { String styleParent = parent; if (styleParent == null) { int lastDot = name.lastIndexOf('.'); if (lastDot != -1) { styleParent = name.substring(0, lastDot); } } StyleData styleData = new StyleData(xmlContext.getPackageName(), name, styleParent, attributeResources); resourceTable.addResource("style", styleData.getName(), new TypedResource<>(styleData, resType, xmlContext)); } }
@Nonnull private static TypedResource<String> createStringTypedResource(String str, String qualifiersStr) { XmlContext mockXmlContext = mock(XmlContext.class); Qualifiers qualifiers = Qualifiers.parse(qualifiersStr); when(mockXmlContext.getQualifiers()).thenReturn(qualifiers); when(mockXmlContext.getConfig()).thenReturn(qualifiers.getConfig()); return new TypedResource<>(str, ResType.CHAR_SEQUENCE, mockXmlContext); }
@Test public void fromInt_asInt_shouldHandleSpacesInString() { final TypedResource<String> resource = new TypedResource<>(" 100 ", ResType.INTEGER, xmlContext); assertThat(Converter.getConverter(ResType.INTEGER).asInt(resource)).isEqualTo(100); } }
@Test public void fromCharSequence_asInt_shouldHandleSpacesInString() { final TypedResource<String> resource = new TypedResource<>(" 100 ", ResType.CHAR_SEQUENCE, xmlContext); assertThat(Converter.getConverter(ResType.CHAR_SEQUENCE).asInt(resource)).isEqualTo(100); }
@Test public void fromCharSequence_asCharSequence_shouldHandleSpacesInString() { final TypedResource<String> resource = new TypedResource<>(" Robolectric ", ResType.CHAR_SEQUENCE, xmlContext); assertThat(Converter.getConverter(ResType.CHAR_SEQUENCE).asCharSequence(resource)).isEqualTo("Robolectric"); }
@Test public void fromColor_asInt_shouldHandleSpacesInString() { final TypedResource<String> resource = new TypedResource<>(" #aaaaaa ", ResType.COLOR, xmlContext); assertThat(Converter.getConverter(ResType.COLOR).asInt(resource)).isEqualTo(-5592406); }
@Test public void fromDrawableValue_asInt_shouldHandleSpacesInString() { final TypedResource<String> resource = new TypedResource<>(" #aaaaaa ", ResType.DRAWABLE, xmlContext); assertThat(Converter.getConverter(ResType.DRAWABLE).asInt(resource)).isEqualTo(-5592406); }
@Test public void shouldNotOverwriteValuesWithMatchingQualifiers() { ResBundle bundle = new ResBundle(); XmlContext xmlContext = mock(XmlContext.class); when(xmlContext.getQualifiers()).thenReturn(Qualifiers.parse("--")); when(xmlContext.getConfig()).thenReturn(new ResTable_config()); when(xmlContext.getPackageName()).thenReturn("org.robolectric"); TypedResource firstValue = new TypedResource<>("first_value", ResType.CHAR_SEQUENCE, xmlContext); TypedResource secondValue = new TypedResource<>("second_value", ResType.CHAR_SEQUENCE, xmlContext); bundle.put(new ResName("org.robolectric", "string", "resource_name"), firstValue); bundle.put(new ResName("org.robolectric", "string", "resource_name"), secondValue); assertThat(bundle.get(new ResName("org.robolectric", "string", "resource_name"), from("")).getData()).isEqualTo("first_value"); }
@Implementation protected String getQuantityString(int resId, int quantity) throws Resources.NotFoundException { if (isLegacyAssetManager()) { ShadowLegacyAssetManager shadowAssetManager = legacyShadowOf(realResources.getAssets()); TypedResource typedResource = shadowAssetManager.getResourceTable() .getValue(resId, shadowAssetManager.config); if (typedResource != null && typedResource instanceof PluralRules) { PluralRules pluralRules = (PluralRules) typedResource; Plural plural = pluralRules.find(quantity); if (plural == null) { return null; } TypedResource<?> resolvedTypedResource = shadowAssetManager.resolve( new TypedResource<>(plural.getString(), ResType.CHAR_SEQUENCE, pluralRules.getXmlContext()), shadowAssetManager.config, resId); return resolvedTypedResource == null ? null : resolvedTypedResource.asString(); } else { return null; } } else { return directlyOn(realResources, Resources.class).getQuantityString(resId, quantity); } }
@Implementation(maxSdk = M) public String getQuantityString(int resId, int quantity) throws Resources.NotFoundException { ShadowLegacyAssetManager shadowAssetManager = legacyShadowOf(realResourcesImpl.getAssets()); TypedResource typedResource = shadowAssetManager.getResourceTable().getValue(resId, shadowAssetManager.config); if (typedResource != null && typedResource instanceof PluralRules) { PluralRules pluralRules = (PluralRules) typedResource; Plural plural = pluralRules.find(quantity); if (plural == null) { return null; } TypedResource<?> resolvedTypedResource = shadowAssetManager.resolve( new TypedResource<>(plural.getString(), ResType.CHAR_SEQUENCE, pluralRules.getXmlContext()), shadowAssetManager.config, resId); return resolvedTypedResource == null ? null : resolvedTypedResource.asString(); } else { return null; } }
@Implementation(maxSdk = M) public String getQuantityString(int resId, int quantity) throws Resources.NotFoundException { ShadowLegacyAssetManager shadowAssetManager = legacyShadowOf(realResourcesImpl.getAssets()); TypedResource typedResource = shadowAssetManager.getResourceTable().getValue(resId, shadowAssetManager.config); if (typedResource != null && typedResource instanceof PluralRules) { PluralRules pluralRules = (PluralRules) typedResource; Plural plural = pluralRules.find(quantity); if (plural == null) { return null; } TypedResource<?> resolvedTypedResource = shadowAssetManager.resolve( new TypedResource<>(plural.getString(), ResType.CHAR_SEQUENCE, pluralRules.getXmlContext()), shadowAssetManager.config, resId); return resolvedTypedResource == null ? null : resolvedTypedResource.asString(); } else { return null; } }
@Override public TypedResource getValue(@Nonnull ResName resName, ResTable_config config) { System.out.println("getValue(" + resName + ", \"" + config + "\")"); return new TypedResource<>(null, ResType.NULL, new XmlContext("", Fs.newFile("."), Qualifiers.parse(""))); }
@Override public TypedResource getValue(int resId, ResTable_config config) { System.out.println("getValue(" + resId + ", \"" + config + "\")"); return new TypedResource<>(null, ResType.NULL, new XmlContext("", Fs.newFile("."), Qualifiers.parse(""))); }
@Override public void onEnd(XMLStreamReader xml, XmlContext xmlContext) throws XMLStreamException { resourceTable.addResource(attrType, name, new TypedResource<>(items, resType, xmlContext)); } }
@Override public void onEnd(XMLStreamReader xml, XmlContext xmlContext) throws XMLStreamException { String styleParent = parent; if (styleParent == null) { int lastDot = name.lastIndexOf('.'); if (lastDot != -1) { styleParent = name.substring(0, lastDot); } } String styleNameWithUnderscores = underscorize(name); StyleData styleData = new StyleData(xmlContext.getPackageName(), styleNameWithUnderscores, underscorize(styleParent), attributeResources); resourceTable.addResource("style", styleData.getName(), new TypedResource<>(styleData, resType, xmlContext)); }