Files
openclaw/apps/macos/Tests/OpenClawIPCTests/VoicePushToTalkTests.swift
2026-05-02 02:47:33 +01:00

68 lines
2.4 KiB
Swift

import AVFoundation
import Testing
@testable import OpenClaw
struct VoicePushToTalkTests {
@Test func `speech normalizer passes through mono buffers`() throws {
let format = try #require(AVAudioFormat(
commonFormat: .pcmFormatFloat32,
sampleRate: 16_000,
channels: 1,
interleaved: false))
let buffer = try #require(AVAudioPCMBuffer(pcmFormat: format, frameCapacity: 4))
buffer.frameLength = 4
let normalized = SpeechAudioBufferNormalizer.speechCompatibleBuffer(from: buffer)
#expect(normalized === buffer)
}
@Test func `speech normalizer downmixes multichannel float buffers to mono`() throws {
var layout = AudioChannelLayout()
layout.mChannelLayoutTag = kAudioChannelLayoutTag_Quadraphonic
let channelLayout = AVAudioChannelLayout(layout: &layout)
let format = AVAudioFormat(
commonFormat: .pcmFormatFloat32,
sampleRate: 16_000,
interleaved: false,
channelLayout: channelLayout)
let buffer = try #require(AVAudioPCMBuffer(pcmFormat: format, frameCapacity: 2))
buffer.frameLength = 2
let channels = try #require(buffer.floatChannelData)
for frame in 0..<2 {
channels[0][frame] = 1
channels[1][frame] = 3
channels[2][frame] = 5
channels[3][frame] = 7
}
let normalized = SpeechAudioBufferNormalizer.speechCompatibleBuffer(from: buffer)
#expect(normalized.format.channelCount == 1)
#expect(normalized.frameLength == 2)
let output = try #require(normalized.floatChannelData?[0])
#expect(output[0] == 4)
#expect(output[1] == 4)
}
@Test func `delta trims committed prefix`() {
let delta = VoicePushToTalk._testDelta(committed: "hello ", current: "hello world again")
#expect(delta == "world again")
}
@Test func `delta falls back when prefix differs`() {
let delta = VoicePushToTalk._testDelta(committed: "goodbye", current: "hello world")
#expect(delta == "hello world")
}
@Test func `attributed colors differ when not final`() {
let colors = VoicePushToTalk._testAttributedColors(isFinal: false)
#expect(colors.0 != colors.1)
}
@Test func `attributed colors match when final`() {
let colors = VoicePushToTalk._testAttributedColors(isFinal: true)
#expect(colors.0 == colors.1)
}
}