c7ee891a90
- Add FlowUtteranceEndCoordinator with 350ms silence drain and 150ms post-roll - Extend FinalChunkRecovery for short/empty final chunks in chunked pipeline - Snapshot partial at mic stop and guard final transcript in FlowSessionManager - Unify tail drain presets (iosFlow/macMLX) and expand diagnostics Co-authored-by: Rocky <hkgood@users.noreply.github.com>
36 lines
1.2 KiB
Swift
36 lines
1.2 KiB
Swift
// FlowUtteranceEndCoordinatorTests.swift
|
|
// OSGKeyboardTests
|
|
|
|
import XCTest
|
|
@testable import OSGKeyboardShared
|
|
|
|
final class FlowUtteranceEndCoordinatorTests: XCTestCase {
|
|
|
|
func testAwaitTailCaptureRunsPostRollAfterSilenceDrain() async {
|
|
let policy = FlowCaptureTailDrainPolicy(
|
|
silenceRMSThreshold: 0.02,
|
|
silenceDurationSeconds: 0.05,
|
|
maxDrainSeconds: 1.0,
|
|
postRollSeconds: 0.08
|
|
)
|
|
let tracker = FlowCaptureDrainTracker()
|
|
let start = Date().timeIntervalSince1970
|
|
tracker.beginDrain(now: start)
|
|
|
|
let timing = await FlowUtteranceEndCoordinator.awaitTailCapture(
|
|
tracker: tracker,
|
|
policy: policy,
|
|
pollIntervalNs: 5_000_000
|
|
)
|
|
|
|
XCTAssertTrue(timing.endedBySilence)
|
|
XCTAssertGreaterThanOrEqual(timing.postRollDurationSeconds, 0.07)
|
|
}
|
|
|
|
func testIOSFlowPresetUsesLongerSilenceAndPostRoll() {
|
|
XCTAssertEqual(FlowCaptureTailDrainPolicy.iosFlow.silenceDurationSeconds, 0.35)
|
|
XCTAssertEqual(FlowCaptureTailDrainPolicy.iosFlow.postRollSeconds, 0.15)
|
|
XCTAssertEqual(FlowCaptureTailDrainPolicy.flowDefault, FlowCaptureTailDrainPolicy.iosFlow)
|
|
}
|
|
}
|