package terminal import ( "bytes" "testing" "time" "tea.chunkbyte.com/kato/captioneer/src/captions" ) func TestTerminalProvisionalAndFinalOutput(t *testing.T) { var output bytes.Buffer sink := New(&output) if err := sink.Publish(captions.Event{Kind: captions.Provisional, Text: "draft"}); err != nil { t.Fatal(err) } if err := sink.Publish(captions.Event{ Kind: captions.Final, Text: "done", StartedAt: time.Second, EndedAt: 2500 * time.Millisecond, }); err != nil { t.Fatal(err) } want := "\r\033[2K… draft\r\033[2K[1.00s-2.50s] done\n" if output.String() != want { t.Fatalf("output = %q, want %q", output.String(), want) } } func TestTerminalHideClearsOnlyVisiblePreview(t *testing.T) { var output bytes.Buffer sink := New(&output) _ = sink.Publish(captions.Event{Kind: captions.Hide}) _ = sink.Publish(captions.Event{Kind: captions.Provisional, Text: "draft"}) _ = sink.Publish(captions.Event{Kind: captions.Hide}) if got := output.String(); got != "\r\033[2K… draft\r\033[2K" { t.Fatalf("unexpected output %q", got) } }