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, "") }