use of com.android.tools.build.bundletool.testing.ResourceTableBuilder in project bundletool by google.
the class ResourcesUtilsTest method filter_withEntryPredicate.
@Test
public void filter_withEntryPredicate() {
ResourceTable resourceTable = new ResourceTableBuilder().addPackage("com.test.app").addDrawableResource("image1", "drawable/image1.jpg").addDrawableResource("image2", "drawable/image2.jpg").addStringResource("label_hello", "Hello world").build();
ResourceTable filteredTable = ResourcesUtils.filterResourceTable(resourceTable, /* removeEntryPredicate= */
resourceTableEntry -> resourceTableEntry.getResourceId().getFullResourceId() == 0x7f010001, /* image2.jpg */
ResourceTableEntry::getEntry);
assertThat(filteredTable).ignoringRepeatedFieldOrder().isEqualTo(new ResourceTableBuilder().addPackage("com.test.app").addDrawableResource("image1", "drawable/image1.jpg").addStringResource("label_hello", "Hello world").build());
}
use of com.android.tools.build.bundletool.testing.ResourceTableBuilder in project bundletool by google.
the class LocaleConfigXmlInjectorTest method process_systemSplits.
@Test
public void process_systemSplits() throws Exception {
ModuleSplit baseMasterSplit = createModuleSplit(new ResourceTableBuilder().addPackage("com.example.app.module").build(), BASE_MODULE_NAME.getName(), /* masterSplit= */
true, SYSTEM, /* languageTargeting= */
null);
ModuleSplit otherSplitA = createModuleSplit(new ResourceTableBuilder().addPackage("com.example.app.module").addStringResourceForMultipleLocales("module", ImmutableMap.of("ru-RU", "module ru-RU")).build(), BASE_MODULE_NAME.getName(), /* masterSplit= */
false, SYSTEM, languageTargeting("ru"));
ModuleSplit otherSplitB = createModuleSplit(new ResourceTableBuilder().addPackage("com.example.app.module").addStringResourceForMultipleLocales("module", ImmutableMap.of("fr", "module fr")).build(), BASE_MODULE_NAME.getName(), /* masterSplit= */
false, SYSTEM, languageTargeting("fr"));
ModuleSplit otherSplitC = createModuleSplit(new ResourceTableBuilder().addPackage("com.example.app.module").addStringResourceForMultipleLocales("module", ImmutableMap.of("en-AU", "module en-AU")).build(), "module", /* masterSplit= */
false, SYSTEM, languageTargeting("en"));
ImmutableList<ModuleSplit> otherSplits = ImmutableList.of(otherSplitA, otherSplitB, otherSplitC);
ImmutableList<ModuleSplit> processedSplits = localeConfigXmlInjector.process(VariantKey.create(baseMasterSplit), ImmutableList.<ModuleSplit>builder().add(baseMasterSplit).addAll(otherSplits).build());
ModuleSplit processedBaseMasterSplit = processedSplits.stream().filter(ModuleSplit::isMasterSplit).collect(onlyElement());
assertThat(processedBaseMasterSplit.getAndroidManifest().hasLocaleConfig()).isTrue();
assertThat(processedBaseMasterSplit.getResourceTable().get()).containsResource("com.example.app.module:xml/locales_config").withFileReference("res/xml/locales_config.xml");
XmlNode expectedLocaleConfigProtoXml = createLocalesXmlNode(new HashSet<>(Arrays.asList("ru-RU", "fr")));
assertThat(XmlNode.parseFrom(processedBaseMasterSplit.getEntries().get(0).getContent().read(), ExtensionRegistry.getEmptyRegistry())).ignoringRepeatedFieldOrder().isEqualTo(expectedLocaleConfigProtoXml);
ImmutableList<ModuleSplit> processedOtherSplits = processedSplits.stream().filter(split -> !split.isMasterSplit()).collect(toImmutableList());
assertThat(processedOtherSplits).containsExactly(otherSplitA, otherSplitB, otherSplitC);
}
use of com.android.tools.build.bundletool.testing.ResourceTableBuilder in project bundletool by google.
the class LocaleConfigXmlInjectorTest method process_duplicateLocales.
@Test
public void process_duplicateLocales() throws Exception {
ModuleSplit baseMasterSplit = createModuleSplit(new ResourceTableBuilder().addPackage("com.example.app.module").build(), BASE_MODULE_NAME.getName(), /* masterSplit= */
true, SPLIT, /* languageTargeting= */
null);
ImmutableList<ModuleSplit> otherSplits = ImmutableList.of(createModuleSplit(new ResourceTableBuilder().addPackage("com.example.app.module").addStringResourceForMultipleLocales("module", ImmutableMap.of("ru-RU", "module ru-RU")).build(), BASE_MODULE_NAME.getName(), /* masterSplit= */
false, SPLIT, languageTargeting("ru")), createModuleSplit(new ResourceTableBuilder().addPackage("com.example.app.module").addStringResourceForMultipleLocales("module", ImmutableMap.of("ru-RU", "module ru-RU")).build(), BASE_MODULE_NAME.getName(), /* masterSplit= */
false, SPLIT, languageTargeting("ru")), createModuleSplit(new ResourceTableBuilder().addPackage("com.example.app.module").addStringResourceForMultipleLocales("module", ImmutableMap.of("fr", "module fr")).build(), BASE_MODULE_NAME.getName(), /* masterSplit= */
false, SPLIT, languageTargeting("fr")));
ModuleSplit processedBaseMasterSplit = localeConfigXmlInjector.process(VariantKey.create(baseMasterSplit), ImmutableList.<ModuleSplit>builder().add(baseMasterSplit).addAll(otherSplits).build()).stream().filter(split -> split.isMasterSplit() && split.isBaseModuleSplit()).collect(onlyElement());
XmlNode expectedLocaleConfigProtoXml = createLocalesXmlNode(new HashSet<>(Arrays.asList("ru-RU", "fr")));
assertThat(XmlNode.parseFrom(processedBaseMasterSplit.getEntries().get(0).getContent().read(), ExtensionRegistry.getEmptyRegistry())).ignoringRepeatedFieldOrder().isEqualTo(expectedLocaleConfigProtoXml);
}
use of com.android.tools.build.bundletool.testing.ResourceTableBuilder in project bundletool by google.
the class LocaleConfigXmlInjectorTest method process.
@Test
public void process() throws Exception {
ModuleSplit baseMasterSplit = createModuleSplit(new ResourceTableBuilder().addPackage("com.example.app.module").build(), BASE_MODULE_NAME.getName(), /* masterSplit= */
true, SPLIT, /* languageTargeting= */
null);
ModuleSplit otherSplitA = createModuleSplit(new ResourceTableBuilder().addPackage("com.example.app.module").addStringResourceForMultipleLocales("module", ImmutableMap.of("ru-RU", "module ru-RU")).build(), BASE_MODULE_NAME.getName(), /* masterSplit= */
false, SPLIT, languageTargeting("ru"));
ModuleSplit otherSplitB = createModuleSplit(new ResourceTableBuilder().addPackage("com.example.app.module").addStringResourceForMultipleLocales("module", ImmutableMap.of("fr", "module fr")).build(), BASE_MODULE_NAME.getName(), /* masterSplit= */
false, SPLIT, languageTargeting("fr"));
ModuleSplit otherSplitC = createModuleSplit(new ResourceTableBuilder().addPackage("com.example.app.module").addStringResourceForMultipleLocales("module", ImmutableMap.of("en-AU", "module en-AU")).build(), "module", /* masterSplit= */
false, SPLIT, languageTargeting("en"));
ImmutableList<ModuleSplit> otherSplits = ImmutableList.of(otherSplitA, otherSplitB, otherSplitC);
ImmutableList<ModuleSplit> processedSplits = localeConfigXmlInjector.process(VariantKey.create(baseMasterSplit), ImmutableList.<ModuleSplit>builder().add(baseMasterSplit).addAll(otherSplits).build());
ModuleSplit processedBaseMasterSplit = processedSplits.stream().filter(ModuleSplit::isMasterSplit).collect(onlyElement());
assertThat(processedBaseMasterSplit.getAndroidManifest().hasLocaleConfig()).isTrue();
assertThat(processedBaseMasterSplit.getResourceTable().get()).containsResource("com.example.app.module:xml/locales_config").withFileReference("res/xml/locales_config.xml");
XmlNode expectedLocaleConfigProtoXml = createLocalesXmlNode(new HashSet<>(Arrays.asList("ru-RU", "fr")));
assertThat(XmlNode.parseFrom(processedBaseMasterSplit.getEntries().get(0).getContent().read(), ExtensionRegistry.getEmptyRegistry())).ignoringRepeatedFieldOrder().isEqualTo(expectedLocaleConfigProtoXml);
ImmutableList<ModuleSplit> processedOtherSplits = processedSplits.stream().filter(split -> !split.isMasterSplit()).collect(toImmutableList());
assertThat(processedOtherSplits).containsExactly(otherSplitA, otherSplitB, otherSplitC);
}
use of com.android.tools.build.bundletool.testing.ResourceTableBuilder in project bundletool by google.
the class SplitsXmlInjectorTest method process_standaloneSplitTypes.
@Test
public void process_standaloneSplitTypes() throws Exception {
ModuleSplit standalone = createModuleSplit(BASE_MODULE_NAME.getName(), /* splitId= */
"", /* masterSplit= */
true, STANDALONE, /* languageTargeting= */
null);
ResourceTable standaloneResourceTable = new ResourceTableBuilder().addPackage("com.example.app").addStringResourceForMultipleLocales("title", ImmutableMap.of("ru-RU", "title ru-RU", "fr", "title fr")).build();
standalone = standalone.toBuilder().setResourceTable(standaloneResourceTable).build();
GeneratedApks generatedApks = GeneratedApks.fromModuleSplits(ImmutableList.of(standalone));
ModuleSplit processedStandalone = xmlInjectorProcess(generatedApks).stream().collect(onlyElement());
assertThat(processedStandalone.getAndroidManifest().getMetadataResourceId("com.android.vending.splits")).hasValue(0x7f020000);
assertThat(processedStandalone.getResourceTable().get()).containsResource("com.example.app:xml/splits0").withFileReference("res/xml/splits0.xml");
XmlNode expectedSplitsProtoXml = new SplitsProtoXmlBuilder().addLanguageMapping(BASE_MODULE_NAME, "ru", "").addLanguageMapping(BASE_MODULE_NAME, "fr", "").build();
assertThat(XmlNode.parseFrom(processedStandalone.getEntries().get(0).getContent().read())).ignoringRepeatedFieldOrder().isEqualTo(expectedSplitsProtoXml);
}
Aggregations