summaryrefslogtreecommitdiff
path: root/internal/comic
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-21 10:48:03 +0300
committerPaul Buetow <paul@buetow.org>2026-04-21 10:48:03 +0300
commit9349c8c2b49aeee7c99567ac62a1bc388b2ede6a (patch)
tree1017a9ee584d8c5ce3e3f580e176476f3a38da9d /internal/comic
parent138695208e06a733d6b27673338fd3ca8de7fe62 (diff)
test o7: strengthen utf8 regression coverage
Diffstat (limited to 'internal/comic')
-rw-r--r--internal/comic/comic_test.go10
1 files changed, 8 insertions, 2 deletions
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) {