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() != "foo" { t.Fatal(buf.String(), buf.Len(), len("foo"), buf.Bytes(), []byte("foo")) } }) 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() != "foo\nbar\nbaz" { 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() != "foo\nbar\nbaz" { 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() != "
\n\tfoo\n\tbar baz\n\tqux quux\n\tcorge\n
\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() != "
\n\tfoo bar\n
\n" { t.Fatal(buf.String()) } }) }