// Tests that filling a glyph buffer for a specific range returns the same // results when shaping word by word as when shaping the full run in one go. TEST_F(CachingWordShaperTest, CommonAccentRightToLeftFillGlyphBuffer) { // "[] []" with an accent mark over the last square bracket. const UChar str[] = { 0x5B, 0x5D, 0x20, 0x5B, 0x301, 0x5D, 0x0 }; TextRun textRun(str, 6); textRun.setDirection(RTL); CachingWordShaper shaper(cache.get()); GlyphBuffer glyphBuffer; shaper.fillGlyphBuffer(&font, textRun, fallbackFonts, &glyphBuffer, 1, 6); OwnPtr<ShapeCache> referenceCache = adoptPtr(new ShapeCache()); CachingWordShaper referenceShaper(referenceCache.get()); GlyphBuffer referenceGlyphBuffer; font.setCanShapeWordByWordForTesting(false); referenceShaper.fillGlyphBuffer(&font, textRun, fallbackFonts, &referenceGlyphBuffer, 1, 6); ASSERT_EQ(5u, referenceGlyphBuffer.size()); ASSERT_EQ(referenceGlyphBuffer.size(), glyphBuffer.size()); ASSERT_EQ(referenceGlyphBuffer.glyphAt(0), glyphBuffer.glyphAt(0)); ASSERT_EQ(referenceGlyphBuffer.glyphAt(1), glyphBuffer.glyphAt(1)); ASSERT_EQ(referenceGlyphBuffer.glyphAt(2), glyphBuffer.glyphAt(2)); ASSERT_EQ(referenceGlyphBuffer.glyphAt(3), glyphBuffer.glyphAt(3)); ASSERT_EQ(referenceGlyphBuffer.glyphAt(4), glyphBuffer.glyphAt(4)); }
// Tests that filling a glyph buffer for a specific range returns the same // results when shaping word by word as when shaping the full run in one go. TEST_F(CachingWordShaperTest, CommonAccentLeftToRightFillGlyphBuffer) { // "/. ." with an accent mark over the first dot. const UChar str[] = {0x2F, 0x301, 0x2E, 0x20, 0x2E, 0x0}; TextRun textRun(str, 5); CachingWordShaper shaper(cache.get()); GlyphBuffer glyphBuffer; shaper.fillGlyphBuffer(&font, textRun, fallbackFonts, &glyphBuffer, 0, 3); std::unique_ptr<ShapeCache> referenceCache = wrapUnique(new ShapeCache()); CachingWordShaper referenceShaper(referenceCache.get()); GlyphBuffer referenceGlyphBuffer; font.setCanShapeWordByWordForTesting(false); referenceShaper.fillGlyphBuffer(&font, textRun, fallbackFonts, &referenceGlyphBuffer, 0, 3); ASSERT_EQ(referenceGlyphBuffer.glyphAt(0), glyphBuffer.glyphAt(0)); ASSERT_EQ(referenceGlyphBuffer.glyphAt(1), glyphBuffer.glyphAt(1)); ASSERT_EQ(referenceGlyphBuffer.glyphAt(2), glyphBuffer.glyphAt(2)); }