1e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch/*
2e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * Copyright (C) 2013 Google Inc. All rights reserved.
3e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *
4e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * Redistribution and use in source and binary forms, with or without
5e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * modification, are permitted provided that the following conditions
6e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * are met:
7e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *
8e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * 1.  Redistributions of source code must retain the above copyright
9e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *     notice, this list of conditions and the following disclaimer.
10e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * 2.  Redistributions in binary form must reproduce the above copyright
11e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *     notice, this list of conditions and the following disclaimer in the
12e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *     documentation and/or other materials provided with the distribution.
13e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *
14e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
15e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch */
25e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
26e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch// Tests for the Font class.
27e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
28e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include "config.h"
29e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
3009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "platform/fonts/Character.h"
31a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)#include "platform/fonts/Font.h"
32e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
33e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include <gtest/gtest.h>
34e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
35c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
36e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
373464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdochstatic void TestSpecificUCharRange(UChar rangeStart, UChar rangeEnd)
38e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
393464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    UChar below[1];
403464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    UChar start[1];
413464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    UChar midway[1];
423464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    UChar end[1];
433464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    UChar above[1];
443464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
453464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    below[0] = rangeStart - 1;
463464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    start[0] = rangeStart;
473464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    midway[0] = ((int)rangeStart + (int)rangeEnd) / 2;
483464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    end[0] = rangeEnd;
493464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    above[0] = rangeEnd + 1;
503464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
5109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimplePath, Character::characterRangeCodePath(below, 1));
5209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(start, 1));
5309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(midway, 1));
5409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(end, 1));
5509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimplePath, Character::characterRangeCodePath(above, 1));
56e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
57e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
583464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben MurdochTEST(FontTest, TestCharacterRangeCodePath)
59e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
603464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    static UChar c1[] = { 0x0 };
6109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c1, 1));
623464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
633464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0x2E5, 0x2E9);
643464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0x300, 0x36F);
653464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0x0591, 0x05BD);
663464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0x05BF, 0x05CF);
673464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0x0600, 0x109F);
683464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0x1100, 0x11FF);
693464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0x135D, 0x135F);
703464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0x1700, 0x18AF);
713464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0x1900, 0x194F);
723464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0x1980, 0x19DF);
733464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0x1A00, 0x1CFF);
743464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
753464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    static UChar c2[] = { 0x1DBF };
7609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c2, 1));
773464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    static UChar c3[] = { 0x1DC0 };
7809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c3, 1));
793464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    static UChar c4[] = { 0x1DD0 };
8009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c4, 1));
813464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    static UChar c5[] = { 0x1DFF };
8209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c5, 1));
833464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    static UChar c6[] = { 0x1E00 };
8409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimpleWithGlyphOverflowPath, Character::characterRangeCodePath(c6, 1));
853464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    static UChar c7[] = { 0x2000 };
8609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimpleWithGlyphOverflowPath, Character::characterRangeCodePath(c7, 1));
873464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    static UChar c8[] = { 0x2001 };
8809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c8, 1));
893464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
903464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0x20D0, 0x20FF);
913464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0x2CEF, 0x2CF1);
923464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0x302A, 0x302F);
933464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
943464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0xA67C, 0xA67D);
953464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0xA6F0, 0xA6F1);
963464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0xA800, 0xABFF);
973464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
983464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0xD7B0, 0xD7FF);
993464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0xFE00, 0xFE0F);
1003464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUCharRange(0xFE20, 0xFE2F);
101e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
102e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
103e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(FontTest, TestCharacterRangeCodePathSurrogate1)
104e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
105e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    /* To be surrogate ... */
106e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    /* 1st character must be 0xD800 .. 0xDBFF */
107e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    /* 2nd character must be 0xdc00 .. 0xdfff */
108e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
109e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    /* The following 5 should all be Simple because they are not surrogate. */
110e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c1[] = { 0xD800, 0xDBFE };
11109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c1, 2));
112e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c2[] = { 0xD800, 0xE000 };
11309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c2, 2));
114e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c3[] = { 0xDBFF, 0xDBFE };
11509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c3, 2));
116e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c4[] = { 0xDBFF, 0xE000 };
11709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c4, 2));
118e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c5[] = { 0xDC00, 0xDBFF };
11909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c5, 2));
120e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
121e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    /* To be Complex, the Supplementary Character must be in either */
122e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    /* U+1F1E6 through U+1F1FF or U+E0100 through U+E01EF. */
123e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    /* That is, a lead of 0xD83C with trail 0xDDE6 .. 0xDDFF or */
124e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    /* a lead of 0xDB40 with trail 0xDD00 .. 0xDDEF. */
125e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c6[] = { 0xD83C, 0xDDE5 };
12609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c6, 2));
127e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c7[] = { 0xD83C, 0xDDE6 };
12809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c7, 2));
129e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c8[] = { 0xD83C, 0xDDF0 };
13009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c8, 2));
131e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c9[] = { 0xD83C, 0xDDFF };
13209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c9, 2));
133e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c10[] = { 0xD83C, 0xDE00 };
13409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c10, 2));
135e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
136e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c11[] = { 0xDB40, 0xDCFF };
13709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c11, 2));
138e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c12[] = { 0xDB40, 0xDD00 };
13909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c12, 2));
140e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c13[] = { 0xDB40, 0xDDED };
14109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c13, 2));
142e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c14[] = { 0xDB40, 0xDDEF };
14309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c14, 2));
144e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c15[] = { 0xDB40, 0xDDF0 };
14509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c15, 2));
146e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
147e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
148e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(FontTest, TestCharacterRangeCodePathString)
149e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
150e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    // Simple-Simple is still simple
151e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c1[] = { 0x2FF, 0x2FF };
15209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimplePath, Character::characterRangeCodePath(c1, 2));
153e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    // Complex-Simple is Complex
154e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c2[] = { 0x300, 0x2FF };
15509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c2, 2));
156e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    // Simple-Complex is Complex
157e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c3[] = { 0x2FF, 0x330 };
15809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c3, 2));
159e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    // Complex-Complex is Complex
160e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c4[] = { 0x36F, 0x330 };
16109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c4, 2));
162e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    // SimpleWithGlyphOverflow-Simple is SimpleWithGlyphOverflow
163e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c5[] = { 0x1E00, 0x2FF };
16409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimpleWithGlyphOverflowPath, Character::characterRangeCodePath(c5, 2));
165e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    // Simple-SimpleWithGlyphOverflow is SimpleWithGlyphOverflow
166e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c6[] = { 0x2FF, 0x2000 };
16709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(SimpleWithGlyphOverflowPath, Character::characterRangeCodePath(c6, 2));
168e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    // SimpleWithGlyphOverflow-Complex is Complex
169e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c7[] = { 0x1E00, 0x330 };
17009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c7, 2));
171e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    // Complex-SimpleWithGlyphOverflow is Complex
172e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c8[] = { 0x330, 0x2000 };
17309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c8, 2));
174e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    // Surrogate-Complex is Complex
175e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c9[] = { 0xD83C, 0xDDE5, 0x330 };
17609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c9, 3));
177e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    // Complex-Surrogate is Complex
178e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    static UChar c10[] = { 0x330, 0xD83C, 0xDDE5 };
17909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_EQ(ComplexPath, Character::characterRangeCodePath(c10, 3));
180e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
181e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
1823464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdochstatic void TestSpecificUChar32RangeIdeograph(UChar32 rangeStart, UChar32 rangeEnd)
1833464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch{
18409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_FALSE(Character::isCJKIdeograph(rangeStart - 1));
18509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeograph(rangeStart));
18609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeograph((UChar32)((uint64_t)rangeStart + (uint64_t)rangeEnd) / 2));
18709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeograph(rangeEnd));
18809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_FALSE(Character::isCJKIdeograph(rangeEnd + 1));
1893464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch}
1903464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
1913464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben MurdochTEST(FontTest, TestIsCJKIdeograph)
1923464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch{
1933464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    // The basic CJK Unified Ideographs block.
1943464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeograph(0x4E00, 0x9FFF);
1953464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    // CJK Unified Ideographs Extension A.
1963464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeograph(0x3400, 0x4DBF);
1973464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    // CJK Unified Ideographs Extension A and Kangxi Radicals.
1983464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeograph(0x2E80, 0x2FDF);
1993464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    // CJK Strokes.
2003464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeograph(0x31C0, 0x31EF);
2013464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    // CJK Compatibility Ideographs.
2023464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeograph(0xF900, 0xFAFF);
2033464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    // CJK Unified Ideographs Extension B.
2043464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeograph(0x20000, 0x2A6DF);
2053464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    // CJK Unified Ideographs Extension C.
2063464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    // CJK Unified Ideographs Extension D.
2073464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeograph(0x2A700, 0x2B81F);
2083464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    // CJK Compatibility Ideographs Supplement.
2093464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeograph(0x2F800, 0x2FA1F);
2103464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch}
2113464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
2123464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdochstatic void TestSpecificUChar32RangeIdeographSymbol(UChar32 rangeStart, UChar32 rangeEnd)
2133464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch{
21409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_FALSE(Character::isCJKIdeographOrSymbol(rangeStart - 1));
21509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(rangeStart));
21609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol((UChar32)((uint64_t)rangeStart + (uint64_t)rangeEnd) / 2));
21709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(rangeEnd));
21809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_FALSE(Character::isCJKIdeographOrSymbol(rangeEnd + 1));
2193464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch}
2203464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
2213464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben MurdochTEST(FontTest, TestIsCJKIdeographOrSymbol)
2223464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch{
2233464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    // CJK Compatibility Ideographs Supplement.
22409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2C7));
22509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2CA));
22609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2CB));
22709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2D9));
22809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
22909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2020));
23009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2021));
23109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2030));
23209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x203B));
23309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x203C));
23409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2042));
23509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2047));
23609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2048));
23709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2049));
23809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2051));
23909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x20DD));
24009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x20DE));
24109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2100));
24209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2103));
24309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2105));
24409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2109));
24509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x210A));
24609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2113));
24709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2116));
24809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2121));
24909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x212B));
25009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x213B));
25109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2150));
25209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2151));
25309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2152));
2543464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
2553464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x2156, 0x215A);
2563464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x2160, 0x216B);
2573464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x2170, 0x217B);
2583464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
25909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x217F));
26009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2189));
26109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2307));
26209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2312));
2633464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
26409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0x23BD));
26509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x23BE));
26609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x23C4));
26709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x23CC));
26809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0x23CD));
26909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x23CE));
27009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2423));
2713464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
2723464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x2460, 0x2492);
2733464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x249C, 0x24FF);
2743464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
27509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25A0));
27609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25A1));
27709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25A2));
27809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25AA));
27909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25AB));
28009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25B1));
28109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25B2));
28209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25B3));
28309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25B6));
28409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25B7));
28509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25BC));
28609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25BD));
28709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25C0));
28809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25C1));
28909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25C6));
29009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25C7));
29109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25C9));
29209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25CB));
29309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25CC));
2943464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
2953464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x25CE, 0x25D3);
2963464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x25E2, 0x25E6);
2973464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
29809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x25EF));
2993464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
3003464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x2600, 0x2603);
3013464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
30209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2605));
30309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2606));
30409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x260E));
30509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2616));
30609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2617));
30709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2640));
30809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2642));
3093464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
3103464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x2660, 0x266F);
3113464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x2672, 0x267D);
3123464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
31309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x26A0));
31409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x26BD));
31509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x26BE));
31609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2713));
31709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x271A));
31809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x273F));
31909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2740));
32009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2756));
3213464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
3223464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x2776, 0x277F);
3233464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
32409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x2B1A));
3253464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
3263464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x2FF0, 0x302F);
32709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x3031));
32809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x312F));
32909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0x3130));
3303464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
33109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0x318F));
33209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x3190));
33309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x319F));
33409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x31BF));
3353464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
33609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0x31FF));
33709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x3200));
33809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x3300));
33909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x33FF));
3403464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
3413464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0xF860, 0xF862);
3423464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0xFE30, 0xFE4F);
3433464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
34409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0xFE10));
34509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0xFE11));
34609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0xFE12));
34709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0xFE19));
3483464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
34909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0xFF0D));
35009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0xFF1B));
35109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0xFF1C));
35209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_FALSE(Character::isCJKIdeographOrSymbol(0xFF1E));
3533464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
3543464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0xFF00, 0xFFEF);
3553464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
35609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    EXPECT_TRUE(Character::isCJKIdeographOrSymbol(0x1F100));
3573464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch
3583464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x1F110, 0x1F129);
3593464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x1F130, 0x1F149);
3603464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x1F150, 0x1F169);
3613464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x1F170, 0x1F189);
3623464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch    TestSpecificUChar32RangeIdeographSymbol(0x1F200, 0x1F6FF);
3633464d02a173573db42f8ee6bb07bb74fabf4f5f2Ben Murdoch}
364e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
365c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
366e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
367