17a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski/* 27a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski * Copyright (C) 2016 The Android Open Source Project 37a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski * 47a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 57a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski * you may not use this file except in compliance with the License. 67a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski * You may obtain a copy of the License at 77a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski * 87a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 97a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski * 107a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski * Unless required by applicable law or agreed to in writing, software 117a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 127a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski * See the License for the specific language governing permissions and 147a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski * limitations under the License. 157a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski */ 167a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski 17ea7897954f6339dcc2e5af1584f72c6b2ecd7a67Adam Lesinski#ifndef TEST_HELPERS_H_ 18ea7897954f6339dcc2e5af1584f72c6b2ecd7a67Adam Lesinski#define TEST_HELPERS_H_ 197a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski 207a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski#include <ostream> 217a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski#include <string> 22c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski#include <vector> 237a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski 24ea7897954f6339dcc2e5af1584f72c6b2ecd7a67Adam Lesinski#include "androidfw/ResourceTypes.h" 25ea7897954f6339dcc2e5af1584f72c6b2ecd7a67Adam Lesinski#include "gtest/gtest.h" 26ea7897954f6339dcc2e5af1584f72c6b2ecd7a67Adam Lesinski#include "utils/String16.h" 27ea7897954f6339dcc2e5af1584f72c6b2ecd7a67Adam Lesinski#include "utils/String8.h" 28f90f2f8dc36e7243b85e0b6a7fd5a590893c827eAdam Lesinski 294c67a475a334e4f65238d439a3339195e03c03beAdam Lesinskistatic inline ::std::ostream& operator<<(::std::ostream& out, const android::String8& str) { 307a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski return out << str.string(); 31f90f2f8dc36e7243b85e0b6a7fd5a590893c827eAdam Lesinski} 32f90f2f8dc36e7243b85e0b6a7fd5a590893c827eAdam Lesinski 334c67a475a334e4f65238d439a3339195e03c03beAdam Lesinskistatic inline ::std::ostream& operator<<(::std::ostream& out, const android::String16& str) { 347a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski return out << android::String8(str).string(); 35f90f2f8dc36e7243b85e0b6a7fd5a590893c827eAdam Lesinski} 36f90f2f8dc36e7243b85e0b6a7fd5a590893c827eAdam Lesinski 3731245b4f06003f1c8cd44c31b387c96ab4e282f9Adam Lesinskinamespace android { 3831245b4f06003f1c8cd44c31b387c96ab4e282f9Adam Lesinski 397ad1110ecd6a840fcd2895c62668828a1ca029c6Adam Lesinskivoid InitializeTest(int* argc, char** argv); 407ad1110ecd6a840fcd2895c62668828a1ca029c6Adam Lesinski 4160293197379e522c870c4a28462804207bab505dAdam Lesinskienum { MAY_NOT_BE_BAG = false }; 4260293197379e522c870c4a28462804207bab505dAdam Lesinski 43ea7897954f6339dcc2e5af1584f72c6b2ecd7a67Adam Lesinskivoid SetTestDataPath(const std::string& path); 44ea7897954f6339dcc2e5af1584f72c6b2ecd7a67Adam Lesinski 45ea7897954f6339dcc2e5af1584f72c6b2ecd7a67Adam Lesinskiconst std::string& GetTestDataPath(); 46ea7897954f6339dcc2e5af1584f72c6b2ecd7a67Adam Lesinski 474c67a475a334e4f65238d439a3339195e03c03beAdam Lesinski::testing::AssertionResult ReadFileFromZipToString(const std::string& zip_path, 484c67a475a334e4f65238d439a3339195e03c03beAdam Lesinski const std::string& file, 494c67a475a334e4f65238d439a3339195e03c03beAdam Lesinski std::string* out_contents); 504c67a475a334e4f65238d439a3339195e03c03beAdam Lesinski 514c67a475a334e4f65238d439a3339195e03c03beAdam Lesinskistatic inline bool operator==(const ResTable_config& a, const ResTable_config& b) { 527a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski return a.compare(b) == 0; 5331245b4f06003f1c8cd44c31b387c96ab4e282f9Adam Lesinski} 5431245b4f06003f1c8cd44c31b387c96ab4e282f9Adam Lesinski 554c67a475a334e4f65238d439a3339195e03c03beAdam Lesinskistatic inline ::std::ostream& operator<<(::std::ostream& out, const ResTable_config& c) { 567a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski return out << c.toString().string(); 5731245b4f06003f1c8cd44c31b387c96ab4e282f9Adam Lesinski} 5831245b4f06003f1c8cd44c31b387c96ab4e282f9Adam Lesinski 594c67a475a334e4f65238d439a3339195e03c03beAdam Lesinski::testing::AssertionResult IsStringEqual(const ResTable& table, uint32_t resource_id, 607a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski const char* expected_str); 6160293197379e522c870c4a28462804207bab505dAdam Lesinski 627ad1110ecd6a840fcd2895c62668828a1ca029c6Adam Lesinskistd::string GetStringFromPool(const ResStringPool* pool, uint32_t idx); 637ad1110ecd6a840fcd2895c62668828a1ca029c6Adam Lesinski 647a37b74d37ff79e805c9e97d977e07bfec753c5aAdam Lesinski} // namespace android 6531245b4f06003f1c8cd44c31b387c96ab4e282f9Adam Lesinski 66ea7897954f6339dcc2e5af1584f72c6b2ecd7a67Adam Lesinski#endif // TEST_HELPERS_H_ 67