mirror of
https://github.com/hanzoai/bot.git
synced 2026-10-30 17:24:26 +00:00
Complete rename of all OpenClaw/OPENCLAW/openclaw references to Hanzo Bot/BOT/bot naming convention: - Env vars: OPENCLAW_* → BOT_* (18 patterns) - Config: ~/.openclaw/ → ~/.bot/, openclaw.json → bot.json - Packages: @openclaw/* → @hanzo/bot-* - Domains: openclaw.ai → hanzo.bot - Mobile: OpenClawKit → BotKit, bundle IDs ai.openclaw → ai.hanzo.bot - mDNS: _openclaw-gw._tcp → _bot-gw._tcp - Docker: CMD hanzo-bot.mjs, BOT_PREFER_PNPM, BOT_DOCKER_APT_PACKAGES - CI: docker-release.yml adds :latest tag on main branch
75 lines
2.6 KiB
Swift
75 lines
2.6 KiB
Swift
import XCTest
|
|
@testable import BotKit
|
|
|
|
final class TalkDirectiveTests: XCTestCase {
|
|
func testParsesDirectiveAndStripsLine() {
|
|
let text = """
|
|
{"voice":"abc123","once":true}
|
|
Hello there.
|
|
"""
|
|
let result = TalkDirectiveParser.parse(text)
|
|
XCTAssertEqual(result.directive?.voiceId, "abc123")
|
|
XCTAssertEqual(result.directive?.once, true)
|
|
XCTAssertEqual(result.stripped, "Hello there.")
|
|
}
|
|
|
|
func testIgnoresNonDirective() {
|
|
let text = "Hello world."
|
|
let result = TalkDirectiveParser.parse(text)
|
|
XCTAssertNil(result.directive)
|
|
XCTAssertEqual(result.stripped, text)
|
|
}
|
|
|
|
func testKeepsDirectiveLineIfNoRecognizedFields() {
|
|
let text = """
|
|
{"unknown":"value"}
|
|
Hello.
|
|
"""
|
|
let result = TalkDirectiveParser.parse(text)
|
|
XCTAssertNil(result.directive)
|
|
XCTAssertEqual(result.stripped, text)
|
|
}
|
|
|
|
func testParsesExtendedOptions() {
|
|
let text = """
|
|
{"voice_id":"v1","model_id":"m1","rate":200,"stability":0.5,"similarity":0.8,"style":0.2,"speaker_boost":true,"seed":1234,"normalize":"auto","lang":"en","output_format":"mp3_44100_128"}
|
|
Hello.
|
|
"""
|
|
let result = TalkDirectiveParser.parse(text)
|
|
XCTAssertEqual(result.directive?.voiceId, "v1")
|
|
XCTAssertEqual(result.directive?.modelId, "m1")
|
|
XCTAssertEqual(result.directive?.rateWPM, 200)
|
|
XCTAssertEqual(result.directive?.stability, 0.5)
|
|
XCTAssertEqual(result.directive?.similarity, 0.8)
|
|
XCTAssertEqual(result.directive?.style, 0.2)
|
|
XCTAssertEqual(result.directive?.speakerBoost, true)
|
|
XCTAssertEqual(result.directive?.seed, 1234)
|
|
XCTAssertEqual(result.directive?.normalize, "auto")
|
|
XCTAssertEqual(result.directive?.language, "en")
|
|
XCTAssertEqual(result.directive?.outputFormat, "mp3_44100_128")
|
|
XCTAssertEqual(result.stripped, "Hello.")
|
|
}
|
|
|
|
func testSkipsLeadingEmptyLinesWhenParsingDirective() {
|
|
let text = """
|
|
|
|
|
|
{"voice":"abc123"}
|
|
Hello there.
|
|
"""
|
|
let result = TalkDirectiveParser.parse(text)
|
|
XCTAssertEqual(result.directive?.voiceId, "abc123")
|
|
XCTAssertEqual(result.stripped, "Hello there.")
|
|
}
|
|
|
|
func testTracksUnknownKeys() {
|
|
let text = """
|
|
{"voice":"abc","mystery":"value","extra":1}
|
|
Hi.
|
|
"""
|
|
let result = TalkDirectiveParser.parse(text)
|
|
XCTAssertEqual(result.directive?.voiceId, "abc")
|
|
XCTAssertEqual(result.unknownKeys, ["extra", "mystery"])
|
|
}
|
|
}
|