| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "platform/fonts/GlyphPageTreeNode.h" | 5 #include "platform/fonts/GlyphPageTreeNode.h" |
| 6 | 6 |
| 7 #include "platform/fonts/SegmentedFontData.h" | 7 #include "platform/fonts/SegmentedFontData.h" |
| 8 #include "platform/fonts/SimpleFontData.h" | 8 #include "platform/fonts/SimpleFontData.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 10 |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 } | 100 } |
| 101 | 101 |
| 102 TEST(GlyphPageTreeNodeTest, segmentedData) | 102 TEST(GlyphPageTreeNodeTest, segmentedData) |
| 103 { | 103 { |
| 104 const unsigned kPageNumber = 0; | 104 const unsigned kPageNumber = 0; |
| 105 size_t pageCountBeforeTest = GlyphPageTreeNode::treeGlyphPageCount(); | 105 size_t pageCountBeforeTest = GlyphPageTreeNode::treeGlyphPageCount(); |
| 106 { | 106 { |
| 107 RefPtr<TestSimpleFontData> dataBtoC = TestSimpleFontData::create('B', 'C
'); | 107 RefPtr<TestSimpleFontData> dataBtoC = TestSimpleFontData::create('B', 'C
'); |
| 108 RefPtr<TestSimpleFontData> dataCtoE = TestSimpleFontData::create('C', 'E
'); | 108 RefPtr<TestSimpleFontData> dataCtoE = TestSimpleFontData::create('C', 'E
'); |
| 109 RefPtr<SegmentedFontData> segmentedData = SegmentedFontData::create(); | 109 RefPtr<SegmentedFontData> segmentedData = SegmentedFontData::create(); |
| 110 segmentedData->appendRange(FontDataRange('A', 'C', dataBtoC)); | 110 segmentedData->appendFace(FontDataForRangeSet(dataBtoC, 'A', 'C')); |
| 111 segmentedData->appendRange(FontDataRange('C', 'D', dataCtoE)); | 111 segmentedData->appendFace(FontDataForRangeSet(dataCtoE, 'C', 'D')); |
| 112 GlyphPageTreeNode* node = GlyphPageTreeNode::getNormalRootChild(segmente
dData.get(), kPageNumber); | 112 GlyphPageTreeNode* node = GlyphPageTreeNode::getNormalRootChild(segmente
dData.get(), kPageNumber); |
| 113 | 113 |
| 114 EXPECT_EQ(0, node->page()->glyphDataForCharacter('A').fontData); | 114 EXPECT_EQ(0, node->page()->glyphDataForCharacter('A').fontData); |
| 115 EXPECT_EQ(dataBtoC, node->page()->glyphDataForCharacter('B').fontData); | 115 EXPECT_EQ(dataBtoC, node->page()->glyphDataForCharacter('B').fontData); |
| 116 EXPECT_EQ(dataBtoC, node->page()->glyphDataForCharacter('C').fontData); | 116 EXPECT_EQ(dataBtoC, node->page()->glyphDataForCharacter('C').fontData); |
| 117 EXPECT_EQ(dataCtoE, node->page()->glyphDataForCharacter('D').fontData); | 117 EXPECT_EQ(dataCtoE, node->page()->glyphDataForCharacter('D').fontData); |
| 118 EXPECT_EQ(0, node->page()->glyphDataForCharacter('E').fontData); | 118 EXPECT_EQ(0, node->page()->glyphDataForCharacter('E').fontData); |
| 119 } | 119 } |
| 120 EXPECT_EQ(pageCountBeforeTest, GlyphPageTreeNode::treeGlyphPageCount()); | 120 EXPECT_EQ(pageCountBeforeTest, GlyphPageTreeNode::treeGlyphPageCount()); |
| 121 } | 121 } |
| (...skipping 16 matching lines...) Expand all Loading... |
| 138 | 138 |
| 139 TEST(GlyphPageTreeNodeTest, customData) | 139 TEST(GlyphPageTreeNodeTest, customData) |
| 140 { | 140 { |
| 141 const unsigned kPageNumber = 0; | 141 const unsigned kPageNumber = 0; |
| 142 size_t pageCountBeforeTest = GlyphPageTreeNode::treeGlyphPageCount(); | 142 size_t pageCountBeforeTest = GlyphPageTreeNode::treeGlyphPageCount(); |
| 143 { | 143 { |
| 144 RefPtr<TestSimpleFontData> dataAtoC = TestSimpleFontData::createUnloaded
('A', 'C'); | 144 RefPtr<TestSimpleFontData> dataAtoC = TestSimpleFontData::createUnloaded
('A', 'C'); |
| 145 RefPtr<TestSimpleFontData> dataBtoD = TestSimpleFontData::create('B', 'D
'); | 145 RefPtr<TestSimpleFontData> dataBtoD = TestSimpleFontData::create('B', 'D
'); |
| 146 RefPtr<TestSimpleFontData> dataCtoE = TestSimpleFontData::createUnloaded
('C', 'E'); | 146 RefPtr<TestSimpleFontData> dataCtoE = TestSimpleFontData::createUnloaded
('C', 'E'); |
| 147 RefPtr<SegmentedFontData> segmentedData = SegmentedFontData::create(); | 147 RefPtr<SegmentedFontData> segmentedData = SegmentedFontData::create(); |
| 148 segmentedData->appendRange(FontDataRange('A', 'C', dataAtoC)); | 148 segmentedData->appendFace(FontDataForRangeSet(dataAtoC, 'A', 'C')); |
| 149 segmentedData->appendRange(FontDataRange('B', 'D', dataBtoD)); | 149 segmentedData->appendFace(FontDataForRangeSet(dataBtoD, 'B', 'D')); |
| 150 segmentedData->appendRange(FontDataRange('C', 'E', dataCtoE)); | 150 segmentedData->appendFace(FontDataForRangeSet(dataCtoE, 'C', 'E')); |
| 151 GlyphPageTreeNode* node = GlyphPageTreeNode::getNormalRootChild(segmente
dData.get(), kPageNumber); | 151 GlyphPageTreeNode* node = GlyphPageTreeNode::getNormalRootChild(segmente
dData.get(), kPageNumber); |
| 152 | 152 |
| 153 EXPECT_EQ(0, node->page()->glyphDataForCharacter('A').fontData); | 153 EXPECT_EQ(0, node->page()->glyphDataForCharacter('A').fontData); |
| 154 EXPECT_EQ(dataBtoD, node->page()->glyphDataForCharacter('B').fontData); | 154 EXPECT_EQ(dataBtoD, node->page()->glyphDataForCharacter('B').fontData); |
| 155 EXPECT_EQ(dataBtoD, node->page()->glyphDataForCharacter('C').fontData); | 155 EXPECT_EQ(dataBtoD, node->page()->glyphDataForCharacter('C').fontData); |
| 156 EXPECT_EQ(dataBtoD, node->page()->glyphDataForCharacter('D').fontData); | 156 EXPECT_EQ(dataBtoD, node->page()->glyphDataForCharacter('D').fontData); |
| 157 EXPECT_EQ(0, node->page()->glyphDataForCharacter('E').fontData); | 157 EXPECT_EQ(0, node->page()->glyphDataForCharacter('E').fontData); |
| 158 | 158 |
| 159 EXPECT_EQ(dataAtoC->customFontData(), node->page()->customFontToLoadAt('
A')); | 159 EXPECT_EQ(dataAtoC->customFontData(), node->page()->customFontToLoadAt('
A')); |
| 160 EXPECT_EQ(dataAtoC->customFontData(), node->page()->customFontToLoadAt('
B')); | 160 EXPECT_EQ(dataAtoC->customFontData(), node->page()->customFontToLoadAt('
B')); |
| 161 EXPECT_EQ(dataAtoC->customFontData(), node->page()->customFontToLoadAt('
C')); | 161 EXPECT_EQ(dataAtoC->customFontData(), node->page()->customFontToLoadAt('
C')); |
| 162 EXPECT_EQ(0, node->page()->customFontToLoadAt('D')); | 162 EXPECT_EQ(0, node->page()->customFontToLoadAt('D')); |
| 163 EXPECT_EQ(dataCtoE->customFontData(), node->page()->customFontToLoadAt('
E')); | 163 EXPECT_EQ(dataCtoE->customFontData(), node->page()->customFontToLoadAt('
E')); |
| 164 } | 164 } |
| 165 EXPECT_EQ(pageCountBeforeTest, GlyphPageTreeNode::treeGlyphPageCount()); | 165 EXPECT_EQ(pageCountBeforeTest, GlyphPageTreeNode::treeGlyphPageCount()); |
| 166 } | 166 } |
| 167 | 167 |
| 168 TEST(GlyphPageTreeNodeTest, customDataWithMultiplePages) | 168 TEST(GlyphPageTreeNodeTest, customDataWithMultiplePages) |
| 169 { | 169 { |
| 170 const unsigned kPageNumber = 0; | 170 const unsigned kPageNumber = 0; |
| 171 size_t pageCountBeforeTest = GlyphPageTreeNode::treeGlyphPageCount(); | 171 size_t pageCountBeforeTest = GlyphPageTreeNode::treeGlyphPageCount(); |
| 172 { | 172 { |
| 173 RefPtr<TestSimpleFontData> dataAtoC = TestSimpleFontData::createUnloaded
('A', 'C'); | 173 RefPtr<TestSimpleFontData> dataAtoC = TestSimpleFontData::createUnloaded
('A', 'C'); |
| 174 RefPtr<TestSimpleFontData> dataBtoD = TestSimpleFontData::create('B', 'D
'); | 174 RefPtr<TestSimpleFontData> dataBtoD = TestSimpleFontData::create('B', 'D
'); |
| 175 RefPtr<TestSimpleFontData> dataCtoE = TestSimpleFontData::createUnloaded
('C', 'E'); | 175 RefPtr<TestSimpleFontData> dataCtoE = TestSimpleFontData::createUnloaded
('C', 'E'); |
| 176 RefPtr<SegmentedFontData> segmentedData1 = SegmentedFontData::create(); | 176 RefPtr<SegmentedFontData> segmentedData1 = SegmentedFontData::create(); |
| 177 RefPtr<SegmentedFontData> segmentedData2 = SegmentedFontData::create(); | 177 RefPtr<SegmentedFontData> segmentedData2 = SegmentedFontData::create(); |
| 178 RefPtr<SegmentedFontData> segmentedData3 = SegmentedFontData::create(); | 178 RefPtr<SegmentedFontData> segmentedData3 = SegmentedFontData::create(); |
| 179 segmentedData1->appendRange(FontDataRange('A', 'C', dataAtoC)); | 179 segmentedData1->appendFace(FontDataForRangeSet(dataAtoC, 'A', 'C')); |
| 180 segmentedData2->appendRange(FontDataRange('B', 'D', dataBtoD)); | 180 segmentedData2->appendFace(FontDataForRangeSet(dataBtoD, 'B', 'D')); |
| 181 segmentedData3->appendRange(FontDataRange('C', 'E', dataCtoE)); | 181 segmentedData3->appendFace(FontDataForRangeSet(dataCtoE, 'C', 'E')); |
| 182 GlyphPageTreeNode* node1 = GlyphPageTreeNode::getNormalRootChild(segment
edData1.get(), kPageNumber); | 182 GlyphPageTreeNode* node1 = GlyphPageTreeNode::getNormalRootChild(segment
edData1.get(), kPageNumber); |
| 183 GlyphPageTreeNode* node2 = node1->getNormalChild(segmentedData2.get(), k
PageNumber); | 183 GlyphPageTreeNode* node2 = node1->getNormalChild(segmentedData2.get(), k
PageNumber); |
| 184 GlyphPageTreeNode* node3 = node2->getNormalChild(segmentedData3.get(), k
PageNumber); | 184 GlyphPageTreeNode* node3 = node2->getNormalChild(segmentedData3.get(), k
PageNumber); |
| 185 | 185 |
| 186 EXPECT_EQ(0, node3->page()->glyphDataForCharacter('A').fontData); | 186 EXPECT_EQ(0, node3->page()->glyphDataForCharacter('A').fontData); |
| 187 EXPECT_EQ(dataBtoD, node3->page()->glyphDataForCharacter('B').fontData); | 187 EXPECT_EQ(dataBtoD, node3->page()->glyphDataForCharacter('B').fontData); |
| 188 EXPECT_EQ(dataBtoD, node3->page()->glyphDataForCharacter('C').fontData); | 188 EXPECT_EQ(dataBtoD, node3->page()->glyphDataForCharacter('C').fontData); |
| 189 EXPECT_EQ(dataBtoD, node3->page()->glyphDataForCharacter('D').fontData); | 189 EXPECT_EQ(dataBtoD, node3->page()->glyphDataForCharacter('D').fontData); |
| 190 EXPECT_EQ(0, node3->page()->glyphDataForCharacter('E').fontData); | 190 EXPECT_EQ(0, node3->page()->glyphDataForCharacter('E').fontData); |
| 191 | 191 |
| 192 EXPECT_EQ(dataAtoC->customFontData(), node3->page()->customFontToLoadAt(
'A')); | 192 EXPECT_EQ(dataAtoC->customFontData(), node3->page()->customFontToLoadAt(
'A')); |
| 193 EXPECT_EQ(dataAtoC->customFontData(), node3->page()->customFontToLoadAt(
'B')); | 193 EXPECT_EQ(dataAtoC->customFontData(), node3->page()->customFontToLoadAt(
'B')); |
| 194 EXPECT_EQ(dataAtoC->customFontData(), node3->page()->customFontToLoadAt(
'C')); | 194 EXPECT_EQ(dataAtoC->customFontData(), node3->page()->customFontToLoadAt(
'C')); |
| 195 EXPECT_EQ(0, node3->page()->customFontToLoadAt('D')); | 195 EXPECT_EQ(0, node3->page()->customFontToLoadAt('D')); |
| 196 EXPECT_EQ(dataCtoE->customFontData(), node3->page()->customFontToLoadAt(
'E')); | 196 EXPECT_EQ(dataCtoE->customFontData(), node3->page()->customFontToLoadAt(
'E')); |
| 197 } | 197 } |
| 198 EXPECT_EQ(pageCountBeforeTest, GlyphPageTreeNode::treeGlyphPageCount()); | 198 EXPECT_EQ(pageCountBeforeTest, GlyphPageTreeNode::treeGlyphPageCount()); |
| 199 } | 199 } |
| 200 | 200 |
| 201 TEST(GlyphPageTreeNodeTest, systemFallback) | 201 TEST(GlyphPageTreeNodeTest, systemFallback) |
| 202 { | 202 { |
| 203 const unsigned kPageNumber = 0; | 203 const unsigned kPageNumber = 0; |
| 204 size_t pageCountBeforeTest = GlyphPageTreeNode::treeGlyphPageCount(); | 204 size_t pageCountBeforeTest = GlyphPageTreeNode::treeGlyphPageCount(); |
| 205 { | 205 { |
| 206 RefPtr<TestSimpleFontData> dataAtoC = TestSimpleFontData::createUnloaded
('A', 'C'); | 206 RefPtr<TestSimpleFontData> dataAtoC = TestSimpleFontData::createUnloaded
('A', 'C'); |
| 207 RefPtr<TestSimpleFontData> dataBtoD = TestSimpleFontData::create('B', 'D
'); | 207 RefPtr<TestSimpleFontData> dataBtoD = TestSimpleFontData::create('B', 'D
'); |
| 208 RefPtr<SegmentedFontData> segmentedData = SegmentedFontData::create(); | 208 RefPtr<SegmentedFontData> segmentedData = SegmentedFontData::create(); |
| 209 segmentedData->appendRange(FontDataRange('A', 'C', dataAtoC)); | 209 segmentedData->appendFace(FontDataForRangeSet(dataAtoC, 'A', 'C')); |
| 210 GlyphPageTreeNode* node1 = GlyphPageTreeNode::getNormalRootChild(segment
edData.get(), kPageNumber); | 210 GlyphPageTreeNode* node1 = GlyphPageTreeNode::getNormalRootChild(segment
edData.get(), kPageNumber); |
| 211 GlyphPageTreeNode* node2 = node1->getNormalChild(dataBtoD.get(), kPageNu
mber); | 211 GlyphPageTreeNode* node2 = node1->getNormalChild(dataBtoD.get(), kPageNu
mber); |
| 212 SystemFallbackGlyphPageTreeNode* node3 = node2->getSystemFallbackChild(k
PageNumber); | 212 SystemFallbackGlyphPageTreeNode* node3 = node2->getSystemFallbackChild(k
PageNumber); |
| 213 | 213 |
| 214 EXPECT_TRUE(node3->isSystemFallback()); | 214 EXPECT_TRUE(node3->isSystemFallback()); |
| 215 | 215 |
| 216 EXPECT_EQ(0, node3->page()->glyphDataForCharacter('A').fontData); | 216 EXPECT_EQ(0, node3->page()->glyphDataForCharacter('A').fontData); |
| 217 EXPECT_EQ(dataBtoD, node3->page()->glyphDataForCharacter('B').fontData); | 217 EXPECT_EQ(dataBtoD, node3->page()->glyphDataForCharacter('B').fontData); |
| 218 EXPECT_EQ(dataBtoD, node3->page()->glyphDataForCharacter('C').fontData); | 218 EXPECT_EQ(dataBtoD, node3->page()->glyphDataForCharacter('C').fontData); |
| 219 EXPECT_EQ(dataBtoD, node3->page()->glyphDataForCharacter('D').fontData); | 219 EXPECT_EQ(dataBtoD, node3->page()->glyphDataForCharacter('D').fontData); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 243 EXPECT_NE(commonPage, latinPage); | 243 EXPECT_NE(commonPage, latinPage); |
| 244 EXPECT_NE(commonPage, simplifiedChinesePage); | 244 EXPECT_NE(commonPage, simplifiedChinesePage); |
| 245 EXPECT_NE(commonPage, traditionalChinesePage); | 245 EXPECT_NE(commonPage, traditionalChinesePage); |
| 246 EXPECT_NE(simplifiedChinesePage, traditionalChinesePage); | 246 EXPECT_NE(simplifiedChinesePage, traditionalChinesePage); |
| 247 EXPECT_NE(commonPage, japanesePage); | 247 EXPECT_NE(commonPage, japanesePage); |
| 248 EXPECT_NE(japanesePage, simplifiedChinesePage); | 248 EXPECT_NE(japanesePage, simplifiedChinesePage); |
| 249 EXPECT_NE(japanesePage, traditionalChinesePage); | 249 EXPECT_NE(japanesePage, traditionalChinesePage); |
| 250 } | 250 } |
| 251 | 251 |
| 252 } // namespace blink | 252 } // namespace blink |
| OLD | NEW |