Files

57 lines
1.2 KiB
Go

package ledger
import (
"os"
"testing"
)
func TestAppendAndRead(t *testing.T) {
f, err := os.CreateTemp("", "ledger-test-*.jsonl")
if err != nil {
t.Fatalf("tempfile: %v", err)
}
path := f.Name()
f.Close()
defer os.Remove(path)
l := New(path, "stream-1")
// ensure empty read
evs, err := l.ReadAll()
if err != nil {
t.Fatalf("read empty: %v", err)
}
if len(evs) != 0 {
t.Fatalf("expected 0 events, got %d", len(evs))
}
e1, err := l.Append("route_decision", map[string]any{"tier": "fast"})
if err != nil {
t.Fatalf("append1: %v", err)
}
if l.LastHash == nil || *l.LastHash != e1.Hash {
t.Fatalf("lasthash not set after append1")
}
e2, err := l.Append("final_output_emitted", map[string]any{"result": "ok"})
if err != nil {
t.Fatalf("append2: %v", err)
}
if l.LastHash == nil || *l.LastHash != e2.Hash {
t.Fatalf("lasthash not set after append2")
}
if e2.PrevHash == nil || *e2.PrevHash != e1.Hash {
t.Fatalf("prevhash chain broken")
}
evs, err = l.ReadAll()
if err != nil {
t.Fatalf("read: %v", err)
}
if len(evs) != 2 {
t.Fatalf("expected 2 events, got %d", len(evs))
}
if evs[0].Hash != e1.Hash || evs[1].Hash != e2.Hash {
t.Fatalf("readback hashes mismatch")
}
}