Merge "[aapt2] Pseudolocalize <plurals> values."

am: a5e26c955b

Change-Id: I11b2e1d51321316535c601401d06a61dcd874bef
This commit is contained in:
Donald Chai
2019-11-07 15:17:34 -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();