// Copyright (c) 2026 Petr BalvĂ­n (https://petrbalvin.org) // SPDX-License-Identifier: MIT package scriptorium import ( "bytes" "testing" ) func TestSupportedDiagram(t *testing.T) { supported := []string{"flowchart", "graph", "sequenceDiagram"} for _, kind := range supported { if !SupportedDiagram(kind) { t.Errorf("SupportedDiagram(%q) = false, want true", kind) } } refused := []string{"", "stateDiagram-v2", "pie", "gantt", "classDiagram", "Flowchart"} for _, kind := range refused { if SupportedDiagram(kind) { t.Errorf("SupportedDiagram(%q) = true, want false", kind) } } } func TestRender(t *testing.T) { got := string(Render([]byte("# Title\n\nHello *world*.\n"))) want := "

Title

\n

Hello world.

\n" if got != want { t.Errorf("Render = %q, want %q", got, want) } } func TestRenderDeterministic(t *testing.T) { source := []byte("- one\n- two\n\n```go\nfmt.Println(1)\n```\n") first := Render(source) for range 5 { if next := Render(source); !bytes.Equal(first, next) { t.Fatal("Render of the same source differs between calls") } } } func TestRenderMath(t *testing.T) { got := string(RenderMath([]byte(`\frac{1}{2}`))) want := `12` if got != want { t.Errorf("RenderMath = %s, want %s", got, want) } } func TestRenderMathDisplay(t *testing.T) { got := string(RenderMathDisplay([]byte("x"))) want := `x` if got != want { t.Errorf("RenderMathDisplay = %s, want %s", got, want) } } func TestRenderDiagram(t *testing.T) { out, err := RenderDiagram([]byte("flowchart TD\n A[Start] --> B[End]\n")) if err != nil { t.Fatalf("render: %v", err) } if !bytes.HasPrefix(out, []byte(`>B: hello\n B-->>A: bye\n") first, err := RenderDiagram(source) if err != nil { t.Fatalf("render: %v", err) } for range 5 { next, err := RenderDiagram(source) if err != nil || !bytes.Equal(first, next) { t.Fatal("RenderDiagram of the same source differs between calls") } } }