Add test cases for markdown package
This commit is contained in:
parent
1bd90d5e4e
commit
2f76dcb84e
3 changed files with 28 additions and 17 deletions
1
main.go
1
main.go
|
|
@ -51,7 +51,6 @@ func main() {
|
|||
flag.Parse()
|
||||
|
||||
var err error
|
||||
// If the token is passed via the flag, set it in the keyring.
|
||||
if token != "" {
|
||||
go keyring.Set(config.Name, "token", token)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -5,18 +5,18 @@ import (
|
|||
)
|
||||
|
||||
var (
|
||||
boldRegex = regexp.MustCompile(`(?ms)\*\*(.*?)\*\*`)
|
||||
italicRegex = regexp.MustCompile(`(?ms)\*(.*?)\*`)
|
||||
underlineRegex = regexp.MustCompile(`(?ms)__(.*?)__`)
|
||||
strikeThroughRegex = regexp.MustCompile(`(?ms)~~(.*?)~~`)
|
||||
inlineCodeBlockRegex = regexp.MustCompile("(?ms)`" + `([^` + "`" + `\n]+)` + "`")
|
||||
boldRe = regexp.MustCompile(`(?ms)\*\*(.*?)\*\*`)
|
||||
italicRe = regexp.MustCompile(`(?ms)\*(.*?)\*`)
|
||||
underlineRe = regexp.MustCompile(`(?ms)__(.*?)__`)
|
||||
strikethroughRe = regexp.MustCompile(`(?ms)~~(.*?)~~`)
|
||||
codeblockRe = regexp.MustCompile("(?ms)`" + `([^` + "`" + `\n]+)` + "`")
|
||||
)
|
||||
|
||||
func Parse(input string) string {
|
||||
input = boldRegex.ReplaceAllString(input, "[::b]$1[::-]")
|
||||
input = italicRegex.ReplaceAllString(input, "[::i]$1[::-]")
|
||||
input = underlineRegex.ReplaceAllString(input, "[::u]$1[::-]")
|
||||
input = strikeThroughRegex.ReplaceAllString(input, "[::s]$1[::-]")
|
||||
input = inlineCodeBlockRegex.ReplaceAllString(input, "[::r]$1[::-]")
|
||||
input = boldRe.ReplaceAllString(input, "[::b]$1[::-]")
|
||||
input = italicRe.ReplaceAllString(input, "[::i]$1[::-]")
|
||||
input = underlineRe.ReplaceAllString(input, "[::u]$1[::-]")
|
||||
input = strikethroughRe.ReplaceAllString(input, "[::s]$1[::-]")
|
||||
input = codeblockRe.ReplaceAllString(input, "[::r]$1[::-]")
|
||||
return input
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,18 +4,30 @@ import (
|
|||
"testing"
|
||||
)
|
||||
|
||||
const input = `**Lorem** ipsum dolor sit amet, consectetur adipiscing __elit.__ Nullam ante magna, luctus in ~~molestie non, elementum sit~~ amet tortor. Nunc euismod urna ac massa dictum ultrices. Donec tempor __dignissim__ ullamcorper. Mauris ultricies, risus non malesuada consectetur, *purus leo interdum purus*, nec vestibulum lacus neque non nulla.`
|
||||
|
||||
func TestParse(t *testing.T) {
|
||||
const want = `[::b]Lorem[::-] ipsum dolor sit amet, consectetur adipiscing [::u]elit.[::-] Nullam ante magna, luctus in [::s]molestie non, elementum sit[::-] amet tortor. Nunc euismod urna ac massa dictum ultrices. Donec tempor [::u]dignissim[::-] ullamcorper. Mauris ultricies, risus non malesuada consectetur, [::i]purus leo interdum purus[::-], nec vestibulum lacus neque non nulla.`
|
||||
testcases := []struct{ input, want string }{
|
||||
// Bold
|
||||
{"Don't **communicate** by sharing memory, share memory by communicating.", "Don't [::b]communicate[::-] by sharing memory, share memory by communicating."},
|
||||
// Italic
|
||||
{"*Concurrency* is not parallelism.", "[::i]Concurrency[::-] is not parallelism."},
|
||||
// Underline
|
||||
{"Channels __orchestrate__; mutexes __serialize__.", "Channels [::u]orchestrate[::-]; mutexes [::u]serialize[::-]."},
|
||||
// Strikethrough
|
||||
{"~~Cgo~~ is not Go.", "[::s]Cgo[::-] is not Go."},
|
||||
// Codeblock
|
||||
{"Don't just check `errors`, handle them `gracefully`.", "Don't just check [::r]errors[::-], handle them [::r]gracefully[::-]."},
|
||||
}
|
||||
|
||||
got := Parse(input)
|
||||
if got != want {
|
||||
t.Errorf("got %s; want %s", got, want)
|
||||
for _, testcase := range testcases {
|
||||
if got := Parse(testcase.input); got != testcase.want {
|
||||
t.Errorf("got %s; want %s", got, testcase.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkParse(b *testing.B) {
|
||||
const input = `**Lorem** ipsum dolor sit amet, consectetur adipiscing __elit.__ Nullam ante magna, luctus in ~~molestie non, elementum sit~~ amet tortor. Nunc euismod urna ac massa dictum ultrices. Donec tempor __dignissim__ ullamcorper. Mauris ultricies, risus non malesuada consectetur, *purus leo interdum purus*, nec vestibulum lacus neque non nulla.`
|
||||
|
||||
for i := 0; i < b.N; i++ {
|
||||
_ = Parse(input)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue