// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "sky/engine/core/css/CSSFontFace.h" #include namespace blink { static const UChar hiraganaA[2] = { 0x3042, 0 }; TEST(CSSFontFace, UnicodeRangeSetEmpty) { Vector ranges; CSSFontFace::UnicodeRangeSet set(ranges); EXPECT_TRUE(set.isEntireRange()); EXPECT_EQ(0u, set.size()); EXPECT_FALSE(set.intersectsWith(String())); EXPECT_TRUE(set.intersectsWith(String("a"))); EXPECT_TRUE(set.intersectsWith(String(hiraganaA))); } TEST(CSSFontFace, UnicodeRangeSetSingleCharacter) { Vector ranges; ranges.append(CSSFontFace::UnicodeRange('b', 'b')); CSSFontFace::UnicodeRangeSet set(ranges); EXPECT_FALSE(set.isEntireRange()); EXPECT_FALSE(set.intersectsWith(String())); EXPECT_FALSE(set.intersectsWith(String("a"))); EXPECT_TRUE(set.intersectsWith(String("b"))); EXPECT_FALSE(set.intersectsWith(String("c"))); EXPECT_TRUE(set.intersectsWith(String("abc"))); EXPECT_FALSE(set.intersectsWith(String(hiraganaA))); ASSERT_EQ(1u, set.size()); EXPECT_EQ('b', set.rangeAt(0).from()); EXPECT_EQ('b', set.rangeAt(0).to()); } TEST(CSSFontFace, UnicodeRangeSetTwoRanges) { Vector ranges; ranges.append(CSSFontFace::UnicodeRange('6', '7')); ranges.append(CSSFontFace::UnicodeRange('2', '4')); CSSFontFace::UnicodeRangeSet set(ranges); EXPECT_FALSE(set.isEntireRange()); EXPECT_FALSE(set.intersectsWith(String())); EXPECT_FALSE(set.intersectsWith(String("1"))); EXPECT_TRUE(set.intersectsWith(String("2"))); EXPECT_TRUE(set.intersectsWith(String("3"))); EXPECT_TRUE(set.intersectsWith(String("4"))); EXPECT_FALSE(set.intersectsWith(String("5"))); EXPECT_TRUE(set.intersectsWith(String("6"))); EXPECT_TRUE(set.intersectsWith(String("7"))); EXPECT_FALSE(set.intersectsWith(String("8"))); ASSERT_EQ(2u, set.size()); EXPECT_EQ('2', set.rangeAt(0).from()); EXPECT_EQ('4', set.rangeAt(0).to()); EXPECT_EQ('6', set.rangeAt(1).from()); EXPECT_EQ('7', set.rangeAt(1).to()); } TEST(CSSFontFace, UnicodeRangeSetOverlap) { Vector ranges; ranges.append(CSSFontFace::UnicodeRange('0', '2')); ranges.append(CSSFontFace::UnicodeRange('1', '1')); ranges.append(CSSFontFace::UnicodeRange('3', '5')); ranges.append(CSSFontFace::UnicodeRange('4', '6')); CSSFontFace::UnicodeRangeSet set(ranges); ASSERT_EQ(1u, set.size()); EXPECT_EQ('0', set.rangeAt(0).from()); EXPECT_EQ('6', set.rangeAt(0).to()); } TEST(CSSFontFace, UnicodeRangeSetNon8Bit) { Vector ranges; ranges.append(CSSFontFace::UnicodeRange(0x3042, 0x3042)); CSSFontFace::UnicodeRangeSet set(ranges); ASSERT_EQ(1u, set.size()); EXPECT_EQ(0x3042, set.rangeAt(0).from()); EXPECT_EQ(0x3042, set.rangeAt(0).to()); EXPECT_FALSE(set.intersectsWith(String("a"))); EXPECT_TRUE(set.intersectsWith(String(hiraganaA))); } } // namespace blink