package mdconv

import (
	"bytes"
	"fmt"
	"strings"
	"testing"

	"tildegit.org/tjp/sliderule/gopher/gophermap"
)

func TestConvert(t *testing.T) {
	tests := []struct {
		name   string
		input  string
		output string
	}{
		{
			name: "basic doc",
			input: strings.ReplaceAll(`
iI am informational text		localhost	70
icontinued on this line		localhost	70
i		localhost	70
0this is my text file	/file.txt	localhost	70
i		localhost	70
1here's a sub-menu	/sub/	localhost	70
.
`[1:], "\n", "\r\n"),
			output: (`
` + "```" + `
I am informational text
continued on this line

` + "```" + `
[this is my text file](/file.txt)

` + "```" + `

` + "```" + `
[here's a sub-menu](/sub/)

`)[1:],
		},
	}

	for _, test := range tests {
		t.Run(test.name, func(t *testing.T) {
			doc, err := gophermap.Parse(bytes.NewBufferString(test.input))
			if err != nil {
				t.Fatal(err)
			}

			buf := &bytes.Buffer{}
			if err := Convert(buf, doc, nil); err != nil {
				t.Fatal(err)
			}

			if buf.String() != test.output {
				fmt.Println(">>> expected:")
				fmt.Println(test.output)
				fmt.Println(">>> got:")
				fmt.Println(buf.String())
				t.Fatal("html body mismatch")
			}
		})
	}
}