package hypertext
import (
"servitor/ansi"
"servitor/style"
"testing"
)
func TestMergeText(t *testing.T) {
lhs0 := "front"
rhs0 := "back"
output0 := mergeText(lhs0, rhs0)
expected0 := "frontback"
if expected0 != output0 {
t.Fatalf("expected %s not %s", expected0, output0)
}
lhs1 := "front "
rhs1 := " back"
output1 := mergeText(lhs1, rhs1)
expected1 := "front back"
if expected1 != output1 {
t.Fatalf("expected %s not %s", expected1, output1)
}
lhs2 := "front "
rhs2 := " \n back"
output2 := mergeText(lhs2, rhs2)
expected2 := "front\nback"
if expected2 != output2 {
t.Fatalf("expected %s not %s", expected2, output2)
}
lhs3 := "front \n\n\n "
rhs3 := " \n back"
output3 := mergeText(lhs3, rhs3)
expected3 := "front\n\nback"
if expected3 != output3 {
t.Fatalf("expected %s not %s", expected3, output3)
}
}
func TestStyles(t *testing.T) {
input := "scode
iumark"
markup, _, err := NewMarkup(input)
if err != nil {
t.Fatal(err)
}
output := markup.Render(50)
if err != nil {
t.Fatal(err)
}
expected := style.Strikethrough("s") +
style.Code("code") +
style.Italic("i") +
style.Underline("u") +
style.Highlight("mark")
if expected != output {
t.Fatalf("excpected output to be %s not %s", expected, output)
}
}
func TestSurroundingBlocks(t *testing.T) {
input := "
first
in \tthe \rmiddlelast
" markup, _, err := NewMarkup(input) if err != nil { t.Fatal(err) } output := markup.Render(50) if err != nil { t.Fatal(err) } expected := `first in ` + style.Highlight("the") + ` middle last` if expected != output { t.Fatalf("excpected output to be %s not %s", expected, output) } } func TestAdjacentBlocks(t *testing.T) { input := "\tfirst
\n\tsecond
" markup, _, err := NewMarkup(input) if err != nil { t.Fatal(err) } output := markup.Render(50) if err != nil { t.Fatal(err) } expected := `first second` if expected != output { t.Fatalf("excpected output to be %s not %s", expected, output) } } func TestPoetry(t *testing.T) { input := "he shouted\t\ta few wordsmulti-space \n\n\n\n\n far down" markup, _, err := NewMarkup(input) if err != nil { t.Fatal(err) } output := markup.Render(50) if err != nil { t.Fatal(err) } expected := style.CodeBlock(ansi.Pad(`multi-space far down`, 50)) if expected != output { t.Fatalf("excpected output to be %s not %s", expected, output) } } func TestNestedBlocks(t *testing.T) { input := `
Once a timid child
` markup, _, err := NewMarkup(input) if err != nil { t.Fatal(err) } output := markup.Render(50) if err != nil { t.Fatal(err) } expected := `Once a timid child ` + style.LinkBlock("https://i.snap.as/P8qpdMbM.jpg", 1) if expected != output { t.Fatalf("excpected output to be %s not %s", expected, output) } } func TestAdjacentLists(t *testing.T) { input := `
hello sir
` markup, _, err := NewMarkup(input) if err != nil { t.Fatal(err) } output := markup.Render(4) if err != nil { t.Fatal(err) } expected := "hell\no\nsir" if expected != output { t.Fatalf("excpected output to be %s not %s", expected, output) } } func TestLinks(t *testing.T) { input := `Great site