Merge "[aapt2] Pseudolocalize <plurals> values." am: a5e26c955b

am: 735aaa630c

Change-Id: Id1b6e3f5b28f86e73a74edf2428784aaba472ee3
This commit is contained in:
Donald Chai
2019-11-07 15:23:33 -08:00
committed by android-build-merger
2 changed files with 22 additions and 1 deletions

View File

@@ -231,7 +231,7 @@ class Visitor : public ValueVisitor {
Visitor sub_visitor(pool_, method_);
if (plural->values[i]) {
plural->values[i]->Accept(&sub_visitor);
if (sub_visitor.value) {
if (sub_visitor.item) {
localized->values[i] = std::move(sub_visitor.item);
} else {
localized->values[i] = std::unique_ptr<Item>(plural->values[i]->Clone(pool_));

View File

@@ -234,6 +234,27 @@ TEST(PseudolocaleGeneratorTest, PseudolocalizeOnlyDefaultConfigs) {
test::ParseConfigOrDie("ar-rXB")));
}
TEST(PseudolocaleGeneratorTest, PluralsArePseudolocalized) {
std::unique_ptr<IAaptContext> context = test::ContextBuilder().Build();
std::unique_ptr<ResourceTable> table =
test::ResourceTableBuilder().SetPackageId("com.pkg", 0x7F).Build();
std::unique_ptr<Plural> plural = util::make_unique<Plural>();
plural->values = {util::make_unique<String>(table->string_pool.MakeRef("zero")),
util::make_unique<String>(table->string_pool.MakeRef("one"))};
ASSERT_TRUE(table->AddResource(test::ParseNameOrDie("com.pkg:plurals/foo"), ConfigDescription{},
{}, std::move(plural), context->GetDiagnostics()));
std::unique_ptr<Plural> expected = util::make_unique<Plural>();
expected->values = {util::make_unique<String>(table->string_pool.MakeRef("[žéŕö one]")),
util::make_unique<String>(table->string_pool.MakeRef("[öñé one]"))};
PseudolocaleGenerator generator;
ASSERT_TRUE(generator.Consume(context.get(), table.get()));
const auto* actual = test::GetValueForConfig<Plural>(table.get(), "com.pkg:plurals/foo",
test::ParseConfigOrDie("en-rXA"));
EXPECT_TRUE(actual->Equals(expected.get()));
}
TEST(PseudolocaleGeneratorTest, RespectUntranslateableSections) {
std::unique_ptr<IAaptContext> context =
test::ContextBuilder().SetCompilationPackage("android").Build();