1a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai/* 2a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai * Copyright (C) 2015 The Android Open Source Project 3a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai * 4a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai * Licensed under the Apache License, Version 2.0 (the "License"); 5a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai * you may not use this file except in compliance with the License. 6a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai * You may obtain a copy of the License at 7a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai * 8a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai * http://www.apache.org/licenses/LICENSE-2.0 9a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai * 10a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai * Unless required by applicable law or agreed to in writing, software 11a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai * distributed under the License is distributed on an "AS IS" BASIS, 12a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai * See the License for the specific language governing permissions and 14a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai * limitations under the License. 15a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai */ 16a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai 17a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai#include <androidfw/ResourceTypes.h> 18a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai 19a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai#include "data/appaslib/R.h" 20a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai 21a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai#include <gtest/gtest.h> 22a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai 23a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Baiusing namespace android; 24a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai 25a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bainamespace { 26a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai 271375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai#include "data/appaslib/appaslib_arsc.h" 281375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai#include "data/appaslib/appaslib_lib_arsc.h" 29a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai 301375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai// This tests the app resources loaded as app. 31a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao BaiTEST(AppAsLibTest, loadedAsApp) { 32a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai ResTable table; 331375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai ASSERT_EQ(NO_ERROR, table.add(appaslib_arsc, appaslib_arsc_len)); 34a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai 35a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai Res_value val; 361375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai ssize_t block = table.getResource(appaslib::R::app::integer::number1, &val); 37a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai ASSERT_GE(block, 0); 38a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai ASSERT_EQ(Res_value::TYPE_REFERENCE, val.dataType); 391375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai ASSERT_EQ(appaslib::R::app::array::integerArray1, val.data); 40a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai} 41a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai 421375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai// This tests the app resources loaded as shared-lib. 43a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao BaiTEST(AppAsLibTest, loadedAsSharedLib) { 44a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai ResTable table; 45a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai // Load as shared library. 461375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai ASSERT_EQ(NO_ERROR, table.add(appaslib_arsc, appaslib_arsc_len, NULL, 0, -1, false, true)); 47a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai 48a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai Res_value val; 491375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai ssize_t block = table.getResource(appaslib::R::lib::integer::number1, &val); 50a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai ASSERT_GE(block, 0); 51a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai ASSERT_EQ(Res_value::TYPE_REFERENCE, val.dataType); 521375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai ASSERT_EQ(appaslib::R::lib::array::integerArray1, val.data); 531375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai} 541375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai 551375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai// This tests the shared-lib loaded with appAsLib as true. 561375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao BaiTEST(AppAsLibTest, loadedSharedLib) { 571375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai ResTable table; 581375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai // Load shared library with appAsLib as true. 591375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai ASSERT_EQ(NO_ERROR, table.add(appaslib_lib_arsc, appaslib_lib_arsc_len, NULL, 0, -1, false, true)); 601375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai 611375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai Res_value val; 621375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai ssize_t block = table.getResource(appaslib::R::lib::integer::number1, &val); 631375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai ASSERT_GE(block, 0); 641375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai ASSERT_EQ(Res_value::TYPE_REFERENCE, val.dataType); 651375e5f180c1e42c9f4d8c51531935b0449b8ed3Tao Bai ASSERT_EQ(appaslib::R::lib::array::integerArray1, val.data); 66a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai} 67a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai 68a6d7e3fb9c9233b9ae46b702d17433854c43d6a0Tao Bai} 69