From 9349c8c2b49aeee7c99567ac62a1bc388b2ede6a Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 21 Apr 2026 10:48:03 +0300 Subject: test o7: strengthen utf8 regression coverage --- internal/comic/comic_test.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'internal/comic/comic_test.go') diff --git a/internal/comic/comic_test.go b/internal/comic/comic_test.go index 0acccb0..a4c50f2 100644 --- a/internal/comic/comic_test.go +++ b/internal/comic/comic_test.go @@ -59,7 +59,7 @@ func TestBuildPanelLayoutUsesFallbackExcerpt(t *testing.T) { func TestSplitIntoSectionsUsesRuneBoundaries(t *testing.T) { t.Parallel() - text := strings.Repeat("Български текст за проверка на разделянето. ", 80) + text := strings.Repeat("a", 99) + "б" + strings.Repeat("c", 300) sections := splitIntoSections(text, 4) if len(sections) != 4 { t.Fatalf("splitIntoSections() sections = %d, want 4", len(sections)) @@ -69,12 +69,15 @@ func TestSplitIntoSectionsUsesRuneBoundaries(t *testing.T) { t.Fatalf("splitIntoSections() section %d is not valid UTF-8: %q", i, section) } } + if !strings.Contains(sections[0], "б") { + t.Fatalf("splitIntoSections() first section = %q, want mixed-width rune preserved", sections[0]) + } } func TestBuildPanelLayoutTruncatesCyrillicOnRuneBoundaries(t *testing.T) { t.Parallel() - text := strings.Repeat("абвгдежзийклмно", 70) + text := strings.Repeat("a", 899) + "б" + strings.Repeat("c", 100) got := buildPanelLayout(text, nil, 2) if !utf8.ValidString(got) { t.Fatalf("buildPanelLayout() returned invalid UTF-8: %q", got) @@ -82,6 +85,9 @@ func TestBuildPanelLayoutTruncatesCyrillicOnRuneBoundaries(t *testing.T) { if !strings.Contains(got, "…") { t.Fatalf("buildPanelLayout() = %q, want truncation ellipsis", got) } + if !strings.Contains(got, "б") { + t.Fatalf("buildPanelLayout() = %q, want mixed-width rune preserved", got) + } } func TestParseGenerateResultUsesConfiguredDimensions(t *testing.T) { -- cgit v1.2.3