75 lines
2.3 KiB
Go
75 lines
2.3 KiB
Go
package parser
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
)
|
|
|
|
func TestSplitSlideBreaks_NoMarkerReturnsBodyUnchanged(t *testing.T) {
|
|
body := []byte("# A\n\nsome text\n")
|
|
got := splitSlideBreaks(body)
|
|
if len(got) != 1 || !bytes.Equal(got[0], body) {
|
|
t.Errorf("splitSlideBreaks() = %q, want [%q]", got, body)
|
|
}
|
|
}
|
|
|
|
func TestSplitSlideBreaks_SplitsOnMarkerLine(t *testing.T) {
|
|
body := []byte("# A\n\n<!-- new slide -->\n\n# B\n")
|
|
got := splitSlideBreaks(body)
|
|
want := [][]byte{[]byte("# A"), []byte("# B")}
|
|
if len(got) != len(want) {
|
|
t.Fatalf("splitSlideBreaks() = %q, want %q", got, want)
|
|
}
|
|
for i := range want {
|
|
if !bytes.Equal(got[i], want[i]) {
|
|
t.Errorf("part %d = %q, want %q", i, got[i], want[i])
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSplitSlideBreaks_HandlesMultipleMarkersAndSurroundingWhitespace(t *testing.T) {
|
|
body := []byte("<!-- new slide -->\n# A\n<!-- new slide -->\n# B\n<!-- new slide -->\n")
|
|
got := splitSlideBreaks(body)
|
|
want := [][]byte{[]byte("# A"), []byte("# B")}
|
|
if len(got) != len(want) {
|
|
t.Fatalf("splitSlideBreaks() = %q, want %q", got, want)
|
|
}
|
|
for i := range want {
|
|
if !bytes.Equal(got[i], want[i]) {
|
|
t.Errorf("part %d = %q, want %q", i, got[i], want[i])
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSplitSlideBreaks_IgnoresMarkerInsideBacktickFence(t *testing.T) {
|
|
body := []byte("# A\n\n```\n<!-- new slide -->\n```\n\n# B\n")
|
|
got := splitSlideBreaks(body)
|
|
if len(got) != 1 {
|
|
t.Fatalf("splitSlideBreaks() = %q, want a single part (marker is inside a fence)", got)
|
|
}
|
|
if !bytes.Equal(got[0], body) {
|
|
t.Errorf("splitSlideBreaks()[0] = %q, want unchanged body %q", got[0], body)
|
|
}
|
|
}
|
|
|
|
func TestSplitSlideBreaks_IgnoresMarkerInsideTildeFence(t *testing.T) {
|
|
body := []byte("# A\n\n~~~\n<!-- new slide -->\n~~~\n\n# B\n")
|
|
got := splitSlideBreaks(body)
|
|
if len(got) != 1 {
|
|
t.Fatalf("splitSlideBreaks() = %q, want a single part (marker is inside a fence)", got)
|
|
}
|
|
}
|
|
|
|
func TestSplitSlideBreaks_SplitsAfterFenceCloses(t *testing.T) {
|
|
body := []byte("```\ncode\n```\n\n<!-- new slide -->\n\n# B\n")
|
|
got := splitSlideBreaks(body)
|
|
want := [][]byte{[]byte("```\ncode\n```"), []byte("# B")}
|
|
if len(got) != len(want) {
|
|
t.Fatalf("splitSlideBreaks() = %q, want %q", got, want)
|
|
}
|
|
for i := range want {
|
|
if !bytes.Equal(got[i], want[i]) {
|
|
t.Errorf("part %d = %q, want %q", i, got[i], want[i])
|
|
}
|
|
}
|
|
}
|