Files
clawdbot/apps/macos/Tests/ClawdisIPCTests/VoiceWakeRuntimeTests.swift
2025-12-09 04:42:44 +01:00

52 lines
1.9 KiB
Swift

import Testing
@testable import Clawdis
@Suite struct VoiceWakeRuntimeTests {
@Test func matchesIsCaseInsensitive() {
let triggers = ["ClAwD", "buddy"]
#expect(VoiceWakeRuntime._testMatches(text: "hey clawd are you there", triggers: triggers))
#expect(!VoiceWakeRuntime._testMatches(text: "nothing to see", triggers: triggers))
}
@Test func matchesIgnoresWhitespace() {
let triggers = [" claude "]
#expect(VoiceWakeRuntime._testMatches(text: "hello claude!", triggers: triggers))
}
@Test func matchesSkipsEmptyTriggers() {
let triggers = [" ", ""]
#expect(!VoiceWakeRuntime._testMatches(text: "hello", triggers: triggers))
}
@Test func trimsAfterTriggerKeepsPostSpeech() {
let triggers = ["claude", "clawd"]
let text = "hey Claude how are you"
#expect(VoiceWakeRuntime._testTrimmedAfterTrigger(text, triggers: triggers) == "how are you")
}
@Test func trimsAfterTriggerReturnsOriginalWhenNoTrigger() {
let triggers = ["claude"]
let text = "good morning friend"
#expect(VoiceWakeRuntime._testTrimmedAfterTrigger(text, triggers: triggers) == text)
}
@Test func trimsAfterFirstMatchingTrigger() {
let triggers = ["buddy", "claude"]
let text = "hello buddy this is after trigger claude also here"
#expect(VoiceWakeRuntime
._testTrimmedAfterTrigger(text, triggers: triggers) == "this is after trigger claude also here")
}
@Test func hasContentAfterTriggerFalseWhenOnlyTrigger() {
let triggers = ["clawd"]
let text = "hey clawd"
#expect(!VoiceWakeRuntime._testHasContentAfterTrigger(text, triggers: triggers))
}
@Test func hasContentAfterTriggerTrueWhenSpeechContinues() {
let triggers = ["claude"]
let text = "claude write a note"
#expect(VoiceWakeRuntime._testHasContentAfterTrigger(text, triggers: triggers))
}
}