diff options
| author | 2017-01-13 15:34:14 -0800 | |
|---|---|---|
| committer | 2017-01-27 16:52:53 -0800 | |
| commit | c6aada9c5789b2777b19c522d3cd5052bbe784a4 (patch) | |
| tree | e78d92b927ba7fb951c0898fe28957a19671a684 /libs/androidfw/tests | |
| parent | 90572a4ab8ac393c57e896be3c608e634866ed38 (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.cpp | 30 | ||||
| -rw-r--r-- | libs/androidfw/tests/data/feature/feature.apk | bin | 1373 -> 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 Binary files differindex 04940fb9bce2..767fed697034 100644 --- a/libs/androidfw/tests/data/feature/feature.apk +++ b/libs/androidfw/tests/data/feature/feature.apk |