ICUEnvironment.h revision 6c8722e217ff5238f0b849152d7936959a728103
1198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka/* 2198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka * Copyright (C) 2015 The Android Open Source Project 3198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka * 4198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka * Licensed under the Apache License, Version 2.0 (the "License"); 5198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka * you may not use this file except in compliance with the License. 6198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka * You may obtain a copy of the License at 7198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka * 8198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka * http://www.apache.org/licenses/LICENSE-2.0 9198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka * 10198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka * Unless required by applicable law or agreed to in writing, software 11198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka * distributed under the License is distributed on an "AS IS" BASIS, 12198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka * See the License for the specific language governing permissions and 14198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka * limitations under the License. 15198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka */ 16198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka 17198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka#ifndef MINIKIN_TEST_ICU_TEST_BASE_H 18198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka#define MINIKIN_TEST_ICU_TEST_BASE_H 19198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka 20198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka// low level file access for mapping ICU data 21198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka#include <fcntl.h> 22198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka#include <sys/mman.h> 236c8722e217ff5238f0b849152d7936959a728103Seigo Nonaka#include <sys/stat.h> 24198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka 251d461589869ee5b7102f96271b0ef0a776ab513cSeigo Nonaka#include <gtest/gtest.h> 261d461589869ee5b7102f96271b0ef0a776ab513cSeigo Nonaka#include <unicode/uclean.h> 271d461589869ee5b7102f96271b0ef0a776ab513cSeigo Nonaka#include <unicode/udata.h> 281d461589869ee5b7102f96271b0ef0a776ab513cSeigo Nonaka 2914e2d136aaef271ba131f917cf5f27baa31ae5adSeigo Nonakanamespace minikin { 3014e2d136aaef271ba131f917cf5f27baa31ae5adSeigo Nonaka 31198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonakaclass ICUTestBase : public testing::Test { 32198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonakaprotected: 33198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka virtual void SetUp() override { 34198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka const char* fn = "/system/usr/icu/" U_ICUDATA_NAME ".dat"; 35198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka int fd = open(fn, O_RDONLY); 36198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka ASSERT_NE(-1, fd); 37198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka struct stat sb; 38198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka ASSERT_EQ(0, fstat(fd, &sb)); 39198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka void* data = mmap(NULL, sb.st_size, PROT_READ, MAP_SHARED, fd, 0); 4081414ed276207225d64469974c82b5742504b9e9Seigo Nonaka close(fd); 41198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka 42198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka UErrorCode errorCode = U_ZERO_ERROR; 43198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka udata_setCommonData(data, &errorCode); 44198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka ASSERT_TRUE(U_SUCCESS(errorCode)); 45198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka u_init(&errorCode); 46198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka ASSERT_TRUE(U_SUCCESS(errorCode)); 47198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka } 48198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka 496c8722e217ff5238f0b849152d7936959a728103Seigo Nonaka virtual void TearDown() override { u_cleanup(); } 50198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka}; 51198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka 5214e2d136aaef271ba131f917cf5f27baa31ae5adSeigo Nonaka} // namespace minikin 53198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka#endif // MINIKIN_TEST_ICU_TEST_BASE_H 54