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