77 lines
1.7 KiB
Go
77 lines
1.7 KiB
Go
|
|
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())
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|