summaryrefslogtreecommitdiff
path: root/libs/androidfw/tests
diff options
context:
space:
mode:
author Adam Lesinski <adamlesinski@google.com> 2017-01-13 15:34:14 -0800
committer Adam Lesinski <adamlesinski@google.com> 2017-01-27 16:52:53 -0800
commitc6aada9c5789b2777b19c522d3cd5052bbe784a4 (patch)
treee78d92b927ba7fb951c0898fe28957a19671a684 /libs/androidfw/tests
parent90572a4ab8ac393c57e896be3c608e634866ed38 (diff)
LoadedArsc: Support feature splits.
Test: make libandroidfw_tests Change-Id: I278273e688da597f4af86dd55f87750501ef8154
Diffstat (limited to 'libs/androidfw/tests')
-rw-r--r--libs/androidfw/tests/LoadedArsc_test.cpp30
-rw-r--r--libs/androidfw/tests/data/feature/feature.apkbin1373 -> 1373 bytes
2 files changed, 30 insertions, 0 deletions
diff --git a/libs/androidfw/tests/LoadedArsc_test.cpp b/libs/androidfw/tests/LoadedArsc_test.cpp
index 045507e2e277..f8aa61aa588a 100644
--- a/libs/androidfw/tests/LoadedArsc_test.cpp
+++ b/libs/androidfw/tests/LoadedArsc_test.cpp
@@ -139,6 +139,36 @@ TEST(LoadedArscTest, LoadAppAsSharedLibrary) {
EXPECT_EQ(0x7f, packages[0]->GetPackageId());
}
+TEST(LoadedArscTest, LoadFeatureSplit) {
+ std::string contents;
+ ASSERT_TRUE(ReadFileFromZipToString(GetTestDataPath() + "/feature/feature.apk", "resources.arsc",
+ &contents));
+ std::unique_ptr<LoadedArsc> loaded_arsc = LoadedArsc::Load(contents.data(), contents.size());
+ ASSERT_NE(nullptr, loaded_arsc);
+
+ ResTable_config desired_config;
+ memset(&desired_config, 0, sizeof(desired_config));
+
+ LoadedArscEntry entry;
+ ResTable_config selected_config;
+ uint32_t flags;
+
+ ASSERT_TRUE(loaded_arsc->FindEntry(basic::R::string::test3, desired_config, &entry,
+ &selected_config, &flags));
+
+ size_t len;
+ const char16_t* type_name16 = entry.type_string_ref.string16(&len);
+ ASSERT_NE(nullptr, type_name16);
+ ASSERT_NE(0u, len);
+
+ size_t utf8_len = utf16_to_utf8_length(type_name16, len);
+ std::string type_name;
+ type_name.resize(utf8_len);
+ utf16_to_utf8(type_name16, len, &*type_name.begin(), utf8_len + 1);
+
+ EXPECT_EQ(std::string("string"), type_name);
+}
+
// structs with size fields (like Res_value, ResTable_entry) should be
// backwards and forwards compatible (aka checking the size field against
// sizeof(Res_value) might not be backwards compatible.
diff --git a/libs/androidfw/tests/data/feature/feature.apk b/libs/androidfw/tests/data/feature/feature.apk
index 04940fb9bce2..767fed697034 100644
--- a/libs/androidfw/tests/data/feature/feature.apk
+++ b/libs/androidfw/tests/data/feature/feature.apk
Binary files differ