mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 07:20:45 +00:00
54 lines
1.8 KiB
Swift
54 lines
1.8 KiB
Swift
import OpenClawProtocol
|
|
import Testing
|
|
@testable import OpenClaw
|
|
|
|
struct TalkModeConfigParsingTests {
|
|
@Test func `rejects normalized talk provider payload without resolved`() {
|
|
let talk: [String: AnyCodable] = [
|
|
"provider": AnyCodable("elevenlabs"),
|
|
"providers": AnyCodable([
|
|
"elevenlabs": [
|
|
"voiceId": "voice-normalized",
|
|
],
|
|
]),
|
|
"voiceId": AnyCodable("voice-legacy"),
|
|
]
|
|
|
|
let selection = TalkModeRuntime.selectTalkProviderConfig(talk)
|
|
#expect(selection == nil)
|
|
}
|
|
|
|
@Test func `falls back to legacy talk fields when normalized payload missing`() {
|
|
let talk: [String: AnyCodable] = [
|
|
"voiceId": AnyCodable("voice-legacy"),
|
|
"apiKey": AnyCodable("legacy-key"),
|
|
]
|
|
|
|
let selection = TalkModeRuntime.selectTalkProviderConfig(talk)
|
|
#expect(selection?.provider == "elevenlabs")
|
|
#expect(selection?.normalizedPayload == false)
|
|
#expect(selection?.config["voiceId"]?.stringValue == "voice-legacy")
|
|
#expect(selection?.config["apiKey"]?.stringValue == "legacy-key")
|
|
}
|
|
|
|
@Test func `reads configured silence timeout ms`() {
|
|
let talk: [String: AnyCodable] = [
|
|
"silenceTimeoutMs": AnyCodable(1500),
|
|
]
|
|
|
|
#expect(TalkModeRuntime.resolvedSilenceTimeoutMs(talk) == 1500)
|
|
}
|
|
|
|
@Test func `defaults silence timeout ms when missing`() {
|
|
#expect(TalkModeRuntime.resolvedSilenceTimeoutMs(nil) == TalkDefaults.silenceTimeoutMs)
|
|
}
|
|
|
|
@Test func `defaults silence timeout ms when invalid`() {
|
|
let talk: [String: AnyCodable] = [
|
|
"silenceTimeoutMs": AnyCodable(0),
|
|
]
|
|
|
|
#expect(TalkModeRuntime.resolvedSilenceTimeoutMs(talk) == TalkDefaults.silenceTimeoutMs)
|
|
}
|
|
}
|