1
0
html/wrap_test.go

77 lines
1.7 KiB
Go
Raw Normal View History

2025-09-11 20:50:00 +02:00
package html_test
import (
"bytes"
"code.squareroundforest.org/arpio/html"
. "code.squareroundforest.org/arpio/html/tags"
"testing"
)
func TestWrap(t *testing.T) {
t.Run("broken unicode", func(t *testing.T) {
b := []byte{'f', 0xc2, 'o', 'o'}
span := Span(string(b))
var buf bytes.Buffer
if err := html.RenderIndent(&buf, "\t", 0, span); err != nil {
t.Fatal(err)
}
if buf.String() != "<span>foo</span>" {
t.Fatal(buf.String(), buf.Len(), len("<span>foo</span>"), buf.Bytes(), []byte("<span>foo</span>"))
}
})
t.Run("multiple words", func(t *testing.T) {
span := Span("foo bar baz")
var buf bytes.Buffer
if err := html.RenderIndent(&buf, "\t", 2, span); err != nil {
t.Fatal(err)
}
if buf.String() != "<span>foo\nbar\nbaz</span>" {
t.Fatal(buf.String())
}
})
t.Run("tag not split", func(t *testing.T) {
span := Span("foo ", Span("bar"), " baz")
var buf bytes.Buffer
if err := html.RenderIndent(&buf, "\t", 2, span); err != nil {
t.Fatal(err)
}
if buf.String() != "<span>foo\n<span>bar</span>\nbaz</span>" {
t.Fatal()
}
})
t.Run("normal text", func(t *testing.T) {
div := Div(Span("foo bar baz qux quux corge"))
var buf bytes.Buffer
if err := html.RenderIndent(&buf, "\t", 9, div); err != nil {
t.Fatal(err)
}
if buf.String() != "<div>\n\t<span>foo\n\tbar baz\n\tqux quux\n\tcorge</span>\n</div>\n" {
t.Fatal(buf.String())
}
})
t.Run("inline space preserved", func(t *testing.T) {
div := Div(Span("foo"), " ", Span("bar"))
var buf bytes.Buffer
if err := html.RenderIndent(&buf, "\t", 0, div); err != nil {
t.Fatal(err)
}
if buf.String() != "<div>\n\t<span>foo</span> <span>bar</span>\n</div>\n" {
t.Fatal(buf.String())
}
})
}