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\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("\n# A\n\n# B\n\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\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\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\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]) } } }