slidewalk/internal/parser/split_test.go
Tom 0fa66d9f48 Erweiterung und CSS
- Code bekommt größere Schrift
- In einer Datei können neue Slides erstellt werden
2026-07-16 22:46:03 +02:00

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])
}
}
}