package gemtext import "testing" type PrefixCase struct { Prefix string Link string Want string } func TestAddPrefix(t *testing.T) { cases := []PrefixCase{ PrefixCase{Prefix: "", Link: "/test/", Want: "/test"}, PrefixCase{Prefix:"https:itwont.work/", Link: "/test/stuff.gmi", Want: "https:itwont.work/test/stuff.gmi"}, PrefixCase{Prefix:"https:itwont.work/", Link: "test/stuff.gmi", Want: "test/stuff.gmi"}, PrefixCase{Prefix:"", Link: "", Want: ""}, PrefixCase{Prefix:"https:itwont.work/", Link: "", Want: ""}, } for _, c := range cases { got := addPrefix(c.Prefix,c.Link) if got != c.Want { t.Errorf("Case %#v, Got %#v", c, got) } } } type LineRenderCase struct { In GemtextObject Want string } func TestRenderHeading(t *testing.T) { cases := []LineRenderCase{ LineRenderCase{In: GemtextObject{Type: HEADING, Level: 1, Text: "Hello"}, Want:"# Hello"}, // I'm not adding a Literal to these cases. LineRenderCase{In: GemtextObject{Type: HEADING, Level: 2, Text: ""}, Want:"## "}, LineRenderCase{In: GemtextObject{Type: HEADING, Level: 2, Text: "Hello"}, Want:"## Hello"}, LineRenderCase{In: GemtextObject{Type: HEADING, Level: 3, Text: "This contains spaces"}, Want:"### This contains spaces"}, } for _, c := range cases { got, _ := RenderHeading(c.In) if got != c.Want { t.Errorf("Case %#v, Got %#v", c, got) } } } func TestRenderHTML(t *testing.T) { out, _ := RenderHTML(&testdocumenttree) want := "

Document

This is paragraph text & It exists

example.com
this should be preformatted.\n=> https://example.com Not a link\n
one line of pre\n
Something\n- someone\n
" if out != want { t.Errorf("Got %#v want %#v", out, want) } }