Files
cthulhu/internal/app/capitalization_test.go

38 lines
1.1 KiB
Go

// Copyright (c) 2026 Storm Dragon
// Authors: Storm Dragon, Angus Kola
// SPDX-License-Identifier: GPL-3.0-or-later
package app
import (
"context"
"errors"
"log/slog"
"testing"
)
func TestCapitalBeepCancellationAndFailure(t *testing.T) {
for _, interrupt := range []bool{false, true} {
speaker := &spellingTestSpeaker{}
worker := newSpeechWorker(slog.New(slog.DiscardHandler), speaker)
worker.capitalization = func() (bool, bool) { return true, true }
ctx, cancel := context.WithCancel(context.Background())
worker.capitalBeep = func(beepContext context.Context) error {
if interrupt {
cancel()
return beepContext.Err()
}
return errors.New("audio unavailable")
}
err := worker.deliver(ctx, speechRequest{Text: "A", Character: true})
cancel()
if interrupt {
if !errors.Is(err, context.Canceled) || len(speaker.parts) != 0 {
t.Fatalf("canceled capital: %v %v", err, speaker.parts)
}
} else if err != nil || len(speaker.parts) != 2 || speaker.parts[0] != "cap" || speaker.parts[1] != "A" {
t.Fatalf("failed beep suppressed speech: %v %v", err, speaker.parts)
}
}
}