160293197379e522c870c4a28462804207bab505dAdam Lesinski/* 260293197379e522c870c4a28462804207bab505dAdam Lesinski * Copyright (C) 2014 The Android Open Source Project 360293197379e522c870c4a28462804207bab505dAdam Lesinski * 460293197379e522c870c4a28462804207bab505dAdam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 560293197379e522c870c4a28462804207bab505dAdam Lesinski * you may not use this file except in compliance with the License. 660293197379e522c870c4a28462804207bab505dAdam Lesinski * You may obtain a copy of the License at 760293197379e522c870c4a28462804207bab505dAdam Lesinski * 860293197379e522c870c4a28462804207bab505dAdam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 960293197379e522c870c4a28462804207bab505dAdam Lesinski * 1060293197379e522c870c4a28462804207bab505dAdam Lesinski * Unless required by applicable law or agreed to in writing, software 1160293197379e522c870c4a28462804207bab505dAdam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 1260293197379e522c870c4a28462804207bab505dAdam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1360293197379e522c870c4a28462804207bab505dAdam Lesinski * See the License for the specific language governing permissions and 1460293197379e522c870c4a28462804207bab505dAdam Lesinski * limitations under the License. 1560293197379e522c870c4a28462804207bab505dAdam Lesinski */ 1660293197379e522c870c4a28462804207bab505dAdam Lesinski 1760293197379e522c870c4a28462804207bab505dAdam Lesinski#include "TestHelpers.h" 1860293197379e522c870c4a28462804207bab505dAdam Lesinski 1960293197379e522c870c4a28462804207bab505dAdam Lesinski#include <androidfw/ResourceTypes.h> 2060293197379e522c870c4a28462804207bab505dAdam Lesinski#include <utils/String8.h> 2160293197379e522c870c4a28462804207bab505dAdam Lesinski#include <gtest/gtest.h> 2260293197379e522c870c4a28462804207bab505dAdam Lesinski 2360293197379e522c870c4a28462804207bab505dAdam Lesinskinamespace android { 2460293197379e522c870c4a28462804207bab505dAdam Lesinski 2560293197379e522c870c4a28462804207bab505dAdam Lesinski::testing::AssertionResult IsStringEqual(const ResTable& table, uint32_t resourceId, const char* expectedStr) { 2660293197379e522c870c4a28462804207bab505dAdam Lesinski Res_value val; 2760293197379e522c870c4a28462804207bab505dAdam Lesinski ssize_t block = table.getResource(resourceId, &val, MAY_NOT_BE_BAG); 2860293197379e522c870c4a28462804207bab505dAdam Lesinski if (block < 0) { 2960293197379e522c870c4a28462804207bab505dAdam Lesinski return ::testing::AssertionFailure() << "could not find resource"; 3060293197379e522c870c4a28462804207bab505dAdam Lesinski } 3160293197379e522c870c4a28462804207bab505dAdam Lesinski 3260293197379e522c870c4a28462804207bab505dAdam Lesinski if (val.dataType != Res_value::TYPE_STRING) { 3360293197379e522c870c4a28462804207bab505dAdam Lesinski return ::testing::AssertionFailure() << "resource is not a string"; 3460293197379e522c870c4a28462804207bab505dAdam Lesinski } 3560293197379e522c870c4a28462804207bab505dAdam Lesinski 3660293197379e522c870c4a28462804207bab505dAdam Lesinski const ResStringPool* pool = table.getTableStringBlock(block); 3760293197379e522c870c4a28462804207bab505dAdam Lesinski if (pool == NULL) { 3860293197379e522c870c4a28462804207bab505dAdam Lesinski return ::testing::AssertionFailure() << "table has no string pool for block " << block; 3960293197379e522c870c4a28462804207bab505dAdam Lesinski } 4060293197379e522c870c4a28462804207bab505dAdam Lesinski 4160293197379e522c870c4a28462804207bab505dAdam Lesinski const String8 actual = pool->string8ObjectAt(val.data); 4260293197379e522c870c4a28462804207bab505dAdam Lesinski if (String8(expectedStr) != actual) { 4360293197379e522c870c4a28462804207bab505dAdam Lesinski return ::testing::AssertionFailure() << actual.string(); 4460293197379e522c870c4a28462804207bab505dAdam Lesinski } 4560293197379e522c870c4a28462804207bab505dAdam Lesinski return ::testing::AssertionSuccess() << actual.string(); 4660293197379e522c870c4a28462804207bab505dAdam Lesinski} 4760293197379e522c870c4a28462804207bab505dAdam Lesinski 4860293197379e522c870c4a28462804207bab505dAdam Lesinski} // namespace android 49