text: test maxlines with exported API

This commit changes _how_ the test for line wrapping is implemented to rely on the
exported API rather than internal symbols.

Thanks to https://github.com/gioui/gio/pull/109 for pointing this out.

Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
This commit is contained in:
Chris Waldon
2023-02-24 10:23:04 -05:00
committed by Elias Naur
parent 5f818bc5e7
commit 1210bbb34a
+16 -13
View File
@@ -28,25 +28,28 @@ func TestWrappingTruncation(t *testing.T) {
}, 200, 200, english, textInput)
untruncatedCount := len(cache.txt.lines)
for i := untruncatedCount + 1; i > 0; i-- {
for expectedLines := untruncatedCount; expectedLines > 0; expectedLines-- {
cache.LayoutString(Parameters{
Alignment: Middle,
PxPerEm: fixed.I(10),
MaxLines: i,
MaxLines: expectedLines,
}, 200, 200, english, textInput)
lineCount := len(cache.txt.lines)
glyphs := []Glyph{}
lineCount := 0
lastGlyphWasLineBreak := false
for g, ok := cache.NextGlyph(); ok; g, ok = cache.NextGlyph() {
glyphs = append(glyphs, g)
if g.Flags&FlagLineBreak != 0 {
lineCount++
lastGlyphWasLineBreak = true
} else {
lastGlyphWasLineBreak = false
}
}
if i <= untruncatedCount {
if lineCount != i {
t.Errorf("expected %d lines, got %d", i, lineCount)
}
} else if i > untruncatedCount {
if lineCount != untruncatedCount {
t.Errorf("expected %d lines, got %d", untruncatedCount, lineCount)
}
if lastGlyphWasLineBreak {
// There was no actual line of text following this break.
lineCount--
}
if lineCount != expectedLines {
t.Errorf("expected %d lines, got %d", expectedLines, lineCount)
}
}
}