Files
agentu/internal/tui/markdown_test.go
T
loveuer 86f5ca4aef v0.0.2: polish tui rendering
Add visible activity state for running turns.
Move model metadata below the input area.
Render assistant Markdown with theme-aware styling.
2026-06-23 09:06:20 +08:00

45 lines
1.3 KiB
Go

package tui
import (
"regexp"
"strings"
"testing"
)
func TestRenderMarkdownSupportsCommonAssistantContent(t *testing.T) {
rendered := renderMarkdown("# Title\n\n- one\n- two\n\n```go\nfmt.Println(\"x\")\n```", 80, themeForMode(ThemeLight))
plain := stripANSI(rendered)
for _, want := range []string{"Title", "one", "two", `fmt.Println("x")`} {
if !strings.Contains(plain, want) {
t.Fatalf("markdown output missing %q:\n%s", want, rendered)
}
}
if strings.Contains(plain, "# Title") {
t.Fatalf("heading was not rendered:\n%s", rendered)
}
}
func TestRenderMarkdownSupportsThemesAndNarrowWidth(t *testing.T) {
for _, mode := range []ThemeMode{ThemeLight, ThemeDark} {
rendered := renderMarkdown("**bold** and `code`", 4, themeForMode(mode))
plain := stripANSI(rendered)
if rendered == "" {
t.Fatalf("empty markdown output for %s", mode)
}
for _, want := range []string{"bold", "code"} {
if !strings.Contains(plain, want) {
t.Fatalf("markdown output for %s missing %q:\n%s", mode, want, rendered)
}
}
if strings.Contains(plain, "**bold**") {
t.Fatalf("strong markdown was not rendered for %s:\n%s", mode, rendered)
}
}
}
var ansiPattern = regexp.MustCompile(`\x1b\[[0-9;:]*[A-Za-z]`)
func stripANSI(value string) string {
return ansiPattern.ReplaceAllString(value, "")
}