1d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// found in the LICENSE file.
4d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
5d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "config.h"
6d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/css/CSSFontFace.h"
7d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
8d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include <gtest/gtest.h>
9d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
10d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)namespace WebCore {
11d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
12d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)static const UChar hiraganaA[2] = { 0x3042, 0 };
13d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
14d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)TEST(CSSFontFace, UnicodeRangeSetEmpty)
15d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){
16d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    Vector<CSSFontFace::UnicodeRange> ranges;
17d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    CSSFontFace::UnicodeRangeSet set(ranges);
18d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_TRUE(set.isEntireRange());
19d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_EQ(0u, set.size());
20d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_FALSE(set.intersectsWith(String()));
21d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_TRUE(set.intersectsWith(String("a")));
22d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_TRUE(set.intersectsWith(String(hiraganaA)));
23d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
24d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
25d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)TEST(CSSFontFace, UnicodeRangeSetSingleCharacter)
26d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){
27d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    Vector<CSSFontFace::UnicodeRange> ranges;
28d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    ranges.append(CSSFontFace::UnicodeRange('b', 'b'));
29d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    CSSFontFace::UnicodeRangeSet set(ranges);
30d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_FALSE(set.isEntireRange());
31d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_FALSE(set.intersectsWith(String()));
32d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_FALSE(set.intersectsWith(String("a")));
33d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_TRUE(set.intersectsWith(String("b")));
34d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_FALSE(set.intersectsWith(String("c")));
35d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_TRUE(set.intersectsWith(String("abc")));
36d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_FALSE(set.intersectsWith(String(hiraganaA)));
37d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    ASSERT_EQ(1u, set.size());
38d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_EQ('b', set.rangeAt(0).from());
39d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_EQ('b', set.rangeAt(0).to());
40d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
41d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
42d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)TEST(CSSFontFace, UnicodeRangeSetTwoRanges)
43d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){
44d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    Vector<CSSFontFace::UnicodeRange> ranges;
45d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    ranges.append(CSSFontFace::UnicodeRange('6', '7'));
46d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    ranges.append(CSSFontFace::UnicodeRange('2', '4'));
47d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    CSSFontFace::UnicodeRangeSet set(ranges);
48d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_FALSE(set.isEntireRange());
49d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_FALSE(set.intersectsWith(String()));
50d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_FALSE(set.intersectsWith(String("1")));
51d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_TRUE(set.intersectsWith(String("2")));
52d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_TRUE(set.intersectsWith(String("3")));
53d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_TRUE(set.intersectsWith(String("4")));
54d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_FALSE(set.intersectsWith(String("5")));
55d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_TRUE(set.intersectsWith(String("6")));
56d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_TRUE(set.intersectsWith(String("7")));
57d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_FALSE(set.intersectsWith(String("8")));
58d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    ASSERT_EQ(2u, set.size());
59d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_EQ('2', set.rangeAt(0).from());
60d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_EQ('4', set.rangeAt(0).to());
61d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_EQ('6', set.rangeAt(1).from());
62d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_EQ('7', set.rangeAt(1).to());
63d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
64d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
65d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)TEST(CSSFontFace, UnicodeRangeSetOverlap)
66d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){
67d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    Vector<CSSFontFace::UnicodeRange> ranges;
68d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    ranges.append(CSSFontFace::UnicodeRange('0', '2'));
69d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    ranges.append(CSSFontFace::UnicodeRange('1', '1'));
70d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    ranges.append(CSSFontFace::UnicodeRange('3', '5'));
71d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    ranges.append(CSSFontFace::UnicodeRange('4', '6'));
72d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    CSSFontFace::UnicodeRangeSet set(ranges);
73d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    ASSERT_EQ(1u, set.size());
74d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_EQ('0', set.rangeAt(0).from());
75d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_EQ('6', set.rangeAt(0).to());
76d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
77d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
78d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)TEST(CSSFontFace, UnicodeRangeSetNon8Bit)
79d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){
80d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    Vector<CSSFontFace::UnicodeRange> ranges;
81d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    ranges.append(CSSFontFace::UnicodeRange(0x3042, 0x3042));
82d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    CSSFontFace::UnicodeRangeSet set(ranges);
83d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    ASSERT_EQ(1u, set.size());
84d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_EQ(0x3042, set.rangeAt(0).from());
85d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_EQ(0x3042, set.rangeAt(0).to());
86d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_FALSE(set.intersectsWith(String("a")));
87d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_TRUE(set.intersectsWith(String(hiraganaA)));
88d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
89d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
90d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} // namespace WebCore
91