| OLD | NEW |
| (Empty) |
| 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 "platform/fonts/GlyphBuffer.h" | |
| 6 | |
| 7 #include "platform/fonts/SimpleFontData.h" | |
| 8 #include "testing/gtest/include/gtest/gtest.h" | |
| 9 #include "wtf/PassRefPtr.h" | |
| 10 #include "wtf/RefPtr.h" | |
| 11 | |
| 12 namespace blink { | |
| 13 | |
| 14 namespace { | |
| 15 | |
| 16 // Minimal TestSimpleFontData implementation. | |
| 17 // Font has no glyphs, but that's okay. | |
| 18 class TestSimpleFontData : public SimpleFontData { | |
| 19 public: | |
| 20 static PassRefPtr<TestSimpleFontData> create() { | |
| 21 return adoptRef(new TestSimpleFontData); | |
| 22 } | |
| 23 | |
| 24 private: | |
| 25 TestSimpleFontData() : SimpleFontData(nullptr, 10, false, false) {} | |
| 26 }; | |
| 27 | |
| 28 } // anonymous namespace | |
| 29 | |
| 30 TEST(GlyphBufferTest, StartsEmpty) { | |
| 31 GlyphBuffer glyphBuffer; | |
| 32 EXPECT_TRUE(glyphBuffer.isEmpty()); | |
| 33 EXPECT_EQ(0u, glyphBuffer.size()); | |
| 34 } | |
| 35 | |
| 36 TEST(GlyphBufferTest, StoresGlyphs) { | |
| 37 RefPtr<SimpleFontData> font1 = TestSimpleFontData::create(); | |
| 38 RefPtr<SimpleFontData> font2 = TestSimpleFontData::create(); | |
| 39 | |
| 40 GlyphBuffer glyphBuffer; | |
| 41 glyphBuffer.add(42, font1.get(), 10); | |
| 42 glyphBuffer.add(43, font1.get(), 15); | |
| 43 glyphBuffer.add(44, font2.get(), 22); | |
| 44 | |
| 45 EXPECT_FALSE(glyphBuffer.isEmpty()); | |
| 46 EXPECT_FALSE(glyphBuffer.hasVerticalOffsets()); | |
| 47 EXPECT_EQ(3u, glyphBuffer.size()); | |
| 48 | |
| 49 EXPECT_EQ(42, glyphBuffer.glyphAt(0)); | |
| 50 EXPECT_EQ(43, glyphBuffer.glyphAt(1)); | |
| 51 EXPECT_EQ(44, glyphBuffer.glyphAt(2)); | |
| 52 | |
| 53 const Glyph* glyphs = glyphBuffer.glyphs(0); | |
| 54 EXPECT_EQ(42, glyphs[0]); | |
| 55 EXPECT_EQ(43, glyphs[1]); | |
| 56 EXPECT_EQ(44, glyphs[2]); | |
| 57 } | |
| 58 | |
| 59 TEST(GlyphBufferTest, StoresVerticalOffsets) { | |
| 60 RefPtr<SimpleFontData> font1 = TestSimpleFontData::create(); | |
| 61 RefPtr<SimpleFontData> font2 = TestSimpleFontData::create(); | |
| 62 | |
| 63 GlyphBuffer glyphBuffer; | |
| 64 EXPECT_FALSE(glyphBuffer.hasVerticalOffsets()); | |
| 65 | |
| 66 glyphBuffer.add(42, font1.get(), FloatPoint(10, 0)); | |
| 67 glyphBuffer.add(43, font1.get(), FloatPoint(15, 0)); | |
| 68 glyphBuffer.add(44, font2.get(), FloatPoint(12, 2)); | |
| 69 | |
| 70 EXPECT_FALSE(glyphBuffer.isEmpty()); | |
| 71 EXPECT_TRUE(glyphBuffer.hasVerticalOffsets()); | |
| 72 EXPECT_EQ(3u, glyphBuffer.size()); | |
| 73 | |
| 74 const float* offsets = glyphBuffer.offsets(0); | |
| 75 EXPECT_EQ(10, glyphBuffer.xOffsetAt(0)); | |
| 76 EXPECT_EQ(0, glyphBuffer.yOffsetAt(0)); | |
| 77 EXPECT_EQ(15, glyphBuffer.xOffsetAt(1)); | |
| 78 EXPECT_EQ(0, glyphBuffer.yOffsetAt(1)); | |
| 79 EXPECT_EQ(12, glyphBuffer.xOffsetAt(2)); | |
| 80 EXPECT_EQ(2, glyphBuffer.yOffsetAt(2)); | |
| 81 | |
| 82 EXPECT_EQ(10, offsets[0]); | |
| 83 EXPECT_EQ(0, offsets[1]); | |
| 84 EXPECT_EQ(15, offsets[2]); | |
| 85 EXPECT_EQ(0, offsets[3]); | |
| 86 EXPECT_EQ(12, offsets[4]); | |
| 87 EXPECT_EQ(2, offsets[5]); | |
| 88 } | |
| 89 | |
| 90 TEST(GlyphBufferTest, StoresOffsets) { | |
| 91 RefPtr<SimpleFontData> font1 = TestSimpleFontData::create(); | |
| 92 RefPtr<SimpleFontData> font2 = TestSimpleFontData::create(); | |
| 93 | |
| 94 GlyphBuffer glyphBuffer; | |
| 95 glyphBuffer.add(42, font1.get(), 10); | |
| 96 glyphBuffer.add(43, font1.get(), 15); | |
| 97 glyphBuffer.add(44, font2.get(), 20); | |
| 98 | |
| 99 EXPECT_FALSE(glyphBuffer.isEmpty()); | |
| 100 EXPECT_FALSE(glyphBuffer.hasVerticalOffsets()); | |
| 101 EXPECT_EQ(3u, glyphBuffer.size()); | |
| 102 | |
| 103 EXPECT_EQ(10, glyphBuffer.xOffsetAt(0)); | |
| 104 EXPECT_EQ(15, glyphBuffer.xOffsetAt(1)); | |
| 105 EXPECT_EQ(20, glyphBuffer.xOffsetAt(2)); | |
| 106 | |
| 107 const float* offsets = glyphBuffer.offsets(0); | |
| 108 EXPECT_EQ(10, offsets[0]); | |
| 109 EXPECT_EQ(15, offsets[1]); | |
| 110 EXPECT_EQ(20, offsets[2]); | |
| 111 } | |
| 112 | |
| 113 TEST(GlyphBufferTest, StoresSimpleFontData) { | |
| 114 RefPtr<SimpleFontData> font1 = TestSimpleFontData::create(); | |
| 115 RefPtr<SimpleFontData> font2 = TestSimpleFontData::create(); | |
| 116 | |
| 117 GlyphBuffer glyphBuffer; | |
| 118 glyphBuffer.add(42, font1.get(), 10); | |
| 119 glyphBuffer.add(43, font1.get(), 15); | |
| 120 glyphBuffer.add(44, font2.get(), 12); | |
| 121 | |
| 122 EXPECT_FALSE(glyphBuffer.isEmpty()); | |
| 123 EXPECT_EQ(3u, glyphBuffer.size()); | |
| 124 | |
| 125 EXPECT_EQ(font1.get(), glyphBuffer.fontDataAt(0)); | |
| 126 EXPECT_EQ(font1.get(), glyphBuffer.fontDataAt(1)); | |
| 127 EXPECT_EQ(font2.get(), glyphBuffer.fontDataAt(2)); | |
| 128 } | |
| 129 | |
| 130 TEST(GlyphBufferTest, GlyphArrayWithOffset) { | |
| 131 RefPtr<SimpleFontData> font1 = TestSimpleFontData::create(); | |
| 132 RefPtr<SimpleFontData> font2 = TestSimpleFontData::create(); | |
| 133 | |
| 134 GlyphBuffer glyphBuffer; | |
| 135 glyphBuffer.add(42, font1.get(), 10); | |
| 136 glyphBuffer.add(43, font1.get(), 15); | |
| 137 glyphBuffer.add(44, font2.get(), 12); | |
| 138 | |
| 139 EXPECT_FALSE(glyphBuffer.isEmpty()); | |
| 140 EXPECT_EQ(3u, glyphBuffer.size()); | |
| 141 | |
| 142 const Glyph* glyphs = glyphBuffer.glyphs(1); | |
| 143 EXPECT_EQ(43, glyphs[0]); | |
| 144 EXPECT_EQ(44, glyphs[1]); | |
| 145 } | |
| 146 | |
| 147 TEST(GlyphBufferTest, OffsetArrayWithNonZeroIndex) { | |
| 148 RefPtr<SimpleFontData> font1 = TestSimpleFontData::create(); | |
| 149 RefPtr<SimpleFontData> font2 = TestSimpleFontData::create(); | |
| 150 | |
| 151 { | |
| 152 GlyphBuffer glyphBuffer; | |
| 153 glyphBuffer.add(42, font1.get(), 10); | |
| 154 glyphBuffer.add(43, font1.get(), 15); | |
| 155 glyphBuffer.add(43, font2.get(), 12); | |
| 156 | |
| 157 EXPECT_FALSE(glyphBuffer.isEmpty()); | |
| 158 EXPECT_FALSE(glyphBuffer.hasVerticalOffsets()); | |
| 159 EXPECT_EQ(3u, glyphBuffer.size()); | |
| 160 | |
| 161 const float* offsets = glyphBuffer.offsets(1); | |
| 162 EXPECT_EQ(15, offsets[0]); | |
| 163 EXPECT_EQ(12, offsets[1]); | |
| 164 } | |
| 165 | |
| 166 { | |
| 167 GlyphBuffer glyphBuffer; | |
| 168 glyphBuffer.add(42, font1.get(), FloatPoint(10, 0)); | |
| 169 glyphBuffer.add(43, font1.get(), FloatPoint(15, 0)); | |
| 170 glyphBuffer.add(43, font2.get(), FloatPoint(12, 2)); | |
| 171 | |
| 172 EXPECT_FALSE(glyphBuffer.isEmpty()); | |
| 173 EXPECT_TRUE(glyphBuffer.hasVerticalOffsets()); | |
| 174 EXPECT_EQ(3u, glyphBuffer.size()); | |
| 175 | |
| 176 const float* offsets = glyphBuffer.offsets(1); | |
| 177 EXPECT_EQ(15, offsets[0]); | |
| 178 EXPECT_EQ(0, offsets[1]); | |
| 179 EXPECT_EQ(12, offsets[2]); | |
| 180 EXPECT_EQ(2, offsets[3]); | |
| 181 } | |
| 182 } | |
| 183 | |
| 184 } // namespace blink | |
| OLD | NEW |