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#include <gtest/gtest.h> 21198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka#include <unicode/uclean.h> 22198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka#include <unicode/udata.h> 23198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka 24198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka// low level file access for mapping ICU data 25198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka#include <fcntl.h> 26198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka#include <sys/stat.h> 27198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka#include <sys/mman.h> 28198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka 29198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonakaclass ICUTestBase : public testing::Test { 30198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonakaprotected: 31198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka virtual void SetUp() override { 32198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka const char* fn = "/system/usr/icu/" U_ICUDATA_NAME ".dat"; 33198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka int fd = open(fn, O_RDONLY); 34198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka ASSERT_NE(-1, fd); 35198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka struct stat sb; 36198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka ASSERT_EQ(0, fstat(fd, &sb)); 37198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka void* data = mmap(NULL, sb.st_size, PROT_READ, MAP_SHARED, fd, 0); 38198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka 39198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka UErrorCode errorCode = U_ZERO_ERROR; 40198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka udata_setCommonData(data, &errorCode); 41198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka ASSERT_TRUE(U_SUCCESS(errorCode)); 42198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka u_init(&errorCode); 43198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka ASSERT_TRUE(U_SUCCESS(errorCode)); 44198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka } 45198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka 46198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka virtual void TearDown() override { 47198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka u_cleanup(); 48198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka } 49198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka}; 50198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka 51198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka 52198b46f1fea3f47ef8eb6317799c0d77aaec52f6Seigo Nonaka#endif // MINIKIN_TEST_ICU_TEST_BASE_H 53