package parser import ( "strings" "testing" "github.com/diamondburned/cchat-mock/segments" "github.com/diamondburned/cchat/text" ) func TestRenderMarkup(t *testing.T) { content := text.Rich{Content: "astolfo is the best trap"} content.Segments = []text.Segment{ segments.NewColored(content.Content, 0x55CDFC), } expect := `` + content.Content + "" if text := RenderMarkup(content); text != expect { t.Fatal("Unexpected text:", text) } } func TestRenderMarkupPartial(t *testing.T) { content := text.Rich{Content: "random placeholder text go brrr"} content.Segments = []text.Segment{ // This is absolutely jankery that should not work at all, but we'll try // it anyway. coloredSegment{0, 4, 0x55CDFC}, coloredSegment{2, 6, 0xFFFFFF}, // naive parsing, so spans close unexpectedly. coloredSegment{4, 6, 0xF7A8B8}, } const expect = "" + `rand` + `om` if text := RenderMarkup(content); !strings.HasPrefix(text, expect) { t.Fatal("Unexpected text:", text) } } type coloredSegment struct { start int end int color uint32 } var _ text.Colorer = (*coloredSegment)(nil) func (c coloredSegment) Bounds() (start, end int) { return c.start, c.end } func (c coloredSegment) Color() uint32 { return c.color }