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