| /* |
| * Copyright 2011 Google Inc. All Rights Reserved. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| // Must include at the first line to avoid ICU / stdint conflict. |
| #include "sfntly/port/type.h" |
| |
| #include <stdio.h> |
| #include <unicode/ucnv.h> |
| #include <unicode/uchar.h> |
| |
| #include "gtest/gtest.h" |
| #include "test/test_utils.h" |
| |
| namespace sfntly { |
| |
| // Check if proper encoding is being performed |
| // Conversion is done from UTF16 to UTF8, SJIS |
| bool TestEncoding() { |
| UConverter* conv = TestUtils::GetEncoder("utf8"); |
| EXPECT_TRUE(conv != NULL); |
| // Ūnĭcōde̽ |
| UChar from[8] = {0x016A, 0x006E, 0x012D, 0x0063, 0x014D, 0x0064, 0x0065, |
| 0x033D}; |
| int32_t want[12] = {0xc5, 0xaa, 0x6e, 0xc4, 0xad, 0x63, 0xc5, 0x8d, 0x64, |
| 0x65, 0xcc, 0xbd}; |
| int32_t i, j = 0; |
| for (i = 0; i < 7; ++i) { |
| int32_t encoded = TestUtils::EncodeOneChar(conv, (int16_t)from[i]); |
| for (; encoded; encoded <<= 8) { |
| byte_t b = (encoded & 0xff000000) >> 24; |
| if (!b) |
| continue; |
| EXPECT_EQ(want[j], b); |
| if (want[j++] != b) { |
| ucnv_close(conv); |
| return false; |
| } |
| } |
| } |
| ucnv_close(conv); |
| return true; |
| } |
| |
| // Check if the proper extension is obtained |
| bool TestExtension() { |
| // usual file name |
| const char *result; |
| result = TestUtils::Extension("../data/ext/tuffy.ttf"); |
| EXPECT_EQ(strcmp(result, ".ttf"), 0); |
| |
| // more than one 'extension' |
| result = TestUtils::Extension("tuffy.ttf.fake"); |
| EXPECT_EQ(strcmp(result, ".fake"), 0); |
| |
| // no extension |
| result = TestUtils::Extension("tuffy"); |
| EXPECT_STREQ(result, NULL); |
| |
| // bogus extension |
| result = TestUtils::Extension("tuffy."); |
| EXPECT_EQ(strcmp(result, "."), 0); |
| |
| return true; |
| } |
| |
| } // namespace sfntly |
| |
| TEST(TestUtils, All) { |
| ASSERT_TRUE(sfntly::TestExtension()); |
| ASSERT_TRUE(sfntly::TestEncoding()); |
| } |