mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
This caused us to lose our gn check certification. :( Turns out gn check was just ignoring all the header paths it didn't understand and so gn check passing for sky wasn't meaning much. I tried to straighten out some of the mess in this CL, but its going to take several more rounds of massaging before gn check passes again. On the bright side (almost) all of our headers are absolute now. Turns out my script (attached to the bug) didn't notice ../ includes but I'll fix that in the next patch. R=abarth@chromium.org BUG=435361 Review URL: https://codereview.chromium.org/746023002
367 lines
16 KiB
C++
367 lines
16 KiB
C++
/*
|
|
* Copyright (C) 2013 Google Inc. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
|
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
* DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
|
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
// Tests for the Font class.
|
|
|
|
#include "sky/engine/config.h"
|
|
|
|
#include "sky/engine/platform/fonts/Character.h"
|
|
#include "sky/engine/platform/fonts/Font.h"
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
namespace blink {
|
|
|
|
static void TestSpecificUCharRange(UChar rangeStart, UChar rangeEnd)
|
|
{
|
|
UChar below[1];
|
|
UChar start[1];
|
|
UChar midway[1];
|
|
UChar end[1];
|
|
UChar above[1];
|
|
|
|
below[0] = rangeStart - 1;
|
|
start[0] = rangeStart;
|
|
midway[0] = ((int)rangeStart + (int)rangeEnd) / 2;
|
|
end[0] = rangeEnd;
|
|
above[0] = rangeEnd + 1;
|
|
|
|
EXPECT_EQ(SimplePath, Character::characterRangeCodePath(below, 1));
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(start, 1));
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(midway, 1));
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(end, 1));
|
|
EXPECT_EQ(SimplePath, Character::characterRangeCodePath(above, 1));
|
|
}
|
|
|
|
TEST(FontTest, TestCharacterRangeCodePath)
|
|
{
|
|
static UChar c1[] = { 0x0 };
|
|
EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c1, 1));
|
|
|
|
TestSpecificUCharRange(0x2E5, 0x2E9);
|
|
TestSpecificUCharRange(0x300, 0x36F);
|
|
TestSpecificUCharRange(0x0591, 0x05BD);
|
|
TestSpecificUCharRange(0x05BF, 0x05CF);
|
|
TestSpecificUCharRange(0x0600, 0x109F);
|
|
TestSpecificUCharRange(0x1100, 0x11FF);
|
|
TestSpecificUCharRange(0x135D, 0x135F);
|
|
TestSpecificUCharRange(0x1700, 0x18AF);
|
|
TestSpecificUCharRange(0x1900, 0x194F);
|
|
TestSpecificUCharRange(0x1980, 0x19DF);
|
|
TestSpecificUCharRange(0x1A00, 0x1CFF);
|
|
|
|
static UChar c2[] = { 0x1DBF };
|
|
EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c2, 1));
|
|
static UChar c3[] = { 0x1DC0 };
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c3, 1));
|
|
static UChar c4[] = { 0x1DD0 };
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c4, 1));
|
|
static UChar c5[] = { 0x1DFF };
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c5, 1));
|
|
static UChar c6[] = { 0x1E00 };
|
|
EXPECT_EQ(SimpleWithGlyphOverflowPath, Character::characterRangeCodePath(c6, 1));
|
|
static UChar c7[] = { 0x2000 };
|
|
EXPECT_EQ(SimpleWithGlyphOverflowPath, Character::characterRangeCodePath(c7, 1));
|
|
static UChar c8[] = { 0x2001 };
|
|
EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c8, 1));
|
|
|
|
TestSpecificUCharRange(0x20D0, 0x20FF);
|
|
TestSpecificUCharRange(0x2CEF, 0x2CF1);
|
|
TestSpecificUCharRange(0x302A, 0x302F);
|
|
|
|
TestSpecificUCharRange(0xA67C, 0xA67D);
|
|
TestSpecificUCharRange(0xA6F0, 0xA6F1);
|
|
TestSpecificUCharRange(0xA800, 0xABFF);
|
|
|
|
TestSpecificUCharRange(0xD7B0, 0xD7FF);
|
|
TestSpecificUCharRange(0xFE00, 0xFE0F);
|
|
TestSpecificUCharRange(0xFE20, 0xFE2F);
|
|
}
|
|
|
|
TEST(FontTest, TestCharacterRangeCodePathSurrogate1)
|
|
{
|
|
/* To be surrogate ... */
|
|
/* 1st character must be 0xD800 .. 0xDBFF */
|
|
/* 2nd character must be 0xdc00 .. 0xdfff */
|
|
|
|
/* The following 5 should all be Simple because they are not surrogate. */
|
|
static UChar c1[] = { 0xD800, 0xDBFE };
|
|
EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c1, 2));
|
|
static UChar c2[] = { 0xD800, 0xE000 };
|
|
EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c2, 2));
|
|
static UChar c3[] = { 0xDBFF, 0xDBFE };
|
|
EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c3, 2));
|
|
static UChar c4[] = { 0xDBFF, 0xE000 };
|
|
EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c4, 2));
|
|
static UChar c5[] = { 0xDC00, 0xDBFF };
|
|
EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c5, 2));
|
|
|
|
/* To be Complex, the Supplementary Character must be in either */
|
|
/* U+1F1E6 through U+1F1FF or U+E0100 through U+E01EF. */
|
|
/* That is, a lead of 0xD83C with trail 0xDDE6 .. 0xDDFF or */
|
|
/* a lead of 0xDB40 with trail 0xDD00 .. 0xDDEF. */
|
|
static UChar c6[] = { 0xD83C, 0xDDE5 };
|
|
EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c6, 2));
|
|
static UChar c7[] = { 0xD83C, 0xDDE6 };
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c7, 2));
|
|
static UChar c8[] = { 0xD83C, 0xDDF0 };
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c8, 2));
|
|
static UChar c9[] = { 0xD83C, 0xDDFF };
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c9, 2));
|
|
static UChar c10[] = { 0xD83C, 0xDE00 };
|
|
EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c10, 2));
|
|
|
|
static UChar c11[] = { 0xDB40, 0xDCFF };
|
|
EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c11, 2));
|
|
static UChar c12[] = { 0xDB40, 0xDD00 };
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c12, 2));
|
|
static UChar c13[] = { 0xDB40, 0xDDED };
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c13, 2));
|
|
static UChar c14[] = { 0xDB40, 0xDDEF };
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c14, 2));
|
|
static UChar c15[] = { 0xDB40, 0xDDF0 };
|
|
EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c15, 2));
|
|
}
|
|
|
|
TEST(FontTest, TestCharacterRangeCodePathString)
|
|
{
|
|
// Simple-Simple is still simple
|
|
static UChar c1[] = { 0x2FF, 0x2FF };
|
|
EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c1, 2));
|
|
// Complex-Simple is Complex
|
|
static UChar c2[] = { 0x300, 0x2FF };
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c2, 2));
|
|
// Simple-Complex is Complex
|
|
static UChar c3[] = { 0x2FF, 0x330 };
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c3, 2));
|
|
// Complex-Complex is Complex
|
|
static UChar c4[] = { 0x36F, 0x330 };
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c4, 2));
|
|
// SimpleWithGlyphOverflow-Simple is SimpleWithGlyphOverflow
|
|
static UChar c5[] = { 0x1E00, 0x2FF };
|
|
EXPECT_EQ(SimpleWithGlyphOverflowPath, Character::characterRangeCodePath(c5, 2));
|
|
// Simple-SimpleWithGlyphOverflow is SimpleWithGlyphOverflow
|
|
static UChar c6[] = { 0x2FF, 0x2000 };
|
|
EXPECT_EQ(SimpleWithGlyphOverflowPath, Character::characterRangeCodePath(c6, 2));
|
|
// SimpleWithGlyphOverflow-Complex is Complex
|
|
static UChar c7[] = { 0x1E00, 0x330 };
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c7, 2));
|
|
// Complex-SimpleWithGlyphOverflow is Complex
|
|
static UChar c8[] = { 0x330, 0x2000 };
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c8, 2));
|
|
// Surrogate-Complex is Complex
|
|
static UChar c9[] = { 0xD83C, 0xDDE5, 0x330 };
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c9, 3));
|
|
// Complex-Surrogate is Complex
|
|
static UChar c10[] = { 0x330, 0xD83C, 0xDDE5 };
|
|
EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c10, 3));
|
|
}
|
|
|
|
static void TestSpecificUChar32RangeIdeograph(UChar32 rangeStart, UChar32 rangeEnd)
|
|
{
|
|
EXPECT_FALSE(Character::isCJKIdeograph(rangeStart - 1));
|
|
EXPECT_TRUE(Character::isCJKIdeograph(rangeStart));
|
|
EXPECT_TRUE(Character::isCJKIdeograph((UChar32)((uint64_t)rangeStart + (uint64_t)rangeEnd) / 2));
|
|
EXPECT_TRUE(Character::isCJKIdeograph(rangeEnd));
|
|
EXPECT_FALSE(Character::isCJKIdeograph(rangeEnd + 1));
|
|
}
|
|
|
|
TEST(FontTest, TestIsCJKIdeograph)
|
|
{
|
|
// The basic CJK Unified Ideographs block.
|
|
TestSpecificUChar32RangeIdeograph(0x4E00, 0x9FFF);
|
|
// CJK Unified Ideographs Extension A.
|
|
TestSpecificUChar32RangeIdeograph(0x3400, 0x4DBF);
|
|
// CJK Unified Ideographs Extension A and Kangxi Radicals.
|
|
TestSpecificUChar32RangeIdeograph(0x2E80, 0x2FDF);
|
|
// CJK Strokes.
|
|
TestSpecificUChar32RangeIdeograph(0x31C0, 0x31EF);
|
|
// CJK Compatibility Ideographs.
|
|
TestSpecificUChar32RangeIdeograph(0xF900, 0xFAFF);
|
|
// CJK Unified Ideographs Extension B.
|
|
TestSpecificUChar32RangeIdeograph(0x20000, 0x2A6DF);
|
|
// CJK Unified Ideographs Extension C.
|
|
// CJK Unified Ideographs Extension D.
|
|
TestSpecificUChar32RangeIdeograph(0x2A700, 0x2B81F);
|
|
// CJK Compatibility Ideographs Supplement.
|
|
TestSpecificUChar32RangeIdeograph(0x2F800, 0x2FA1F);
|
|
}
|
|
|
|
static void TestSpecificUChar32RangeIdeographSymbol(UChar32 rangeStart, UChar32 rangeEnd)
|
|
{
|
|
EXPECT_FALSE(Character::isCJKIdeographOrSymbol(rangeStart - 1));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(rangeStart));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol((UChar32)((uint64_t)rangeStart + (uint64_t)rangeEnd) / 2));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(rangeEnd));
|
|
EXPECT_FALSE(Character::isCJKIdeographOrSymbol(rangeEnd + 1));
|
|
}
|
|
|
|
TEST(FontTest, TestIsCJKIdeographOrSymbol)
|
|
{
|
|
// CJK Compatibility Ideographs Supplement.
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2C7));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2CA));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2CB));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2D9));
|
|
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2020));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2021));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2030));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x203B));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x203C));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2042));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2047));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2048));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2049));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2051));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x20DD));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x20DE));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2100));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2103));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2105));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2109));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x210A));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2113));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2116));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2121));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x212B));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x213B));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2150));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2151));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2152));
|
|
|
|
TestSpecificUChar32RangeIdeographSymbol(0x2156, 0x215A);
|
|
TestSpecificUChar32RangeIdeographSymbol(0x2160, 0x216B);
|
|
TestSpecificUChar32RangeIdeographSymbol(0x2170, 0x217B);
|
|
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x217F));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2189));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2307));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2312));
|
|
|
|
EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0x23BD));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x23BE));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x23C4));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x23CC));
|
|
EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0x23CD));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x23CE));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2423));
|
|
|
|
TestSpecificUChar32RangeIdeographSymbol(0x2460, 0x2492);
|
|
TestSpecificUChar32RangeIdeographSymbol(0x249C, 0x24FF);
|
|
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25A0));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25A1));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25A2));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25AA));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25AB));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25B1));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25B2));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25B3));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25B6));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25B7));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25BC));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25BD));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25C0));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25C1));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25C6));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25C7));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25C9));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25CB));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25CC));
|
|
|
|
TestSpecificUChar32RangeIdeographSymbol(0x25CE, 0x25D3);
|
|
TestSpecificUChar32RangeIdeographSymbol(0x25E2, 0x25E6);
|
|
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25EF));
|
|
|
|
TestSpecificUChar32RangeIdeographSymbol(0x2600, 0x2603);
|
|
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2605));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2606));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x260E));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2616));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2617));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2640));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2642));
|
|
|
|
TestSpecificUChar32RangeIdeographSymbol(0x2660, 0x266F);
|
|
TestSpecificUChar32RangeIdeographSymbol(0x2672, 0x267D);
|
|
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x26A0));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x26BD));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x26BE));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2713));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x271A));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x273F));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2740));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2756));
|
|
|
|
TestSpecificUChar32RangeIdeographSymbol(0x2776, 0x277F);
|
|
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2B1A));
|
|
|
|
TestSpecificUChar32RangeIdeographSymbol(0x2FF0, 0x302F);
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x3031));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x312F));
|
|
EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0x3130));
|
|
|
|
EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0x318F));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x3190));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x319F));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x31BF));
|
|
|
|
EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0x31FF));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x3200));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x3300));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x33FF));
|
|
|
|
TestSpecificUChar32RangeIdeographSymbol(0xF860, 0xF862);
|
|
TestSpecificUChar32RangeIdeographSymbol(0xFE30, 0xFE4F);
|
|
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0xFE10));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0xFE11));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0xFE12));
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0xFE19));
|
|
|
|
EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0xFF0D));
|
|
EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0xFF1B));
|
|
EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0xFF1C));
|
|
EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0xFF1E));
|
|
|
|
TestSpecificUChar32RangeIdeographSymbol(0xFF00, 0xFFEF);
|
|
|
|
EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x1F100));
|
|
|
|
TestSpecificUChar32RangeIdeographSymbol(0x1F110, 0x1F129);
|
|
TestSpecificUChar32RangeIdeographSymbol(0x1F130, 0x1F149);
|
|
TestSpecificUChar32RangeIdeographSymbol(0x1F150, 0x1F169);
|
|
TestSpecificUChar32RangeIdeographSymbol(0x1F170, 0x1F189);
|
|
TestSpecificUChar32RangeIdeographSymbol(0x1F200, 0x1F6FF);
|
|
}
|
|
|
|
} // namespace blink
|
|
|