Files
openclaw/apps/macos/Tests/OpenClawIPCTests/AppStateVoiceEarsTests.swift
Vincent Koc 60bf2bd1ad fix(macos): wait for the current reconnect snapshot (#116550)
* fix(macos): isolate snapshot waiter timeouts

* chore: leave changelog to release generation

* test(macos): wait for voice ear expiry
2026-07-30 22:31:40 +00:00

33 lines
942 B
Swift

import Foundation
import Testing
@testable import OpenClaw
@Suite(.serialized)
@MainActor
struct AppStateVoiceEarsTests {
@Test func `indefinite ear boost survives cancelled expiry`() async throws {
let state = AppState(preview: true)
state.triggerVoiceEars(ttl: 60)
state.triggerVoiceEars(ttl: nil)
try await Task.sleep(for: .milliseconds(20))
#expect(state.earBoostActive)
state.stopVoiceEars()
}
@Test func `replacement expiry owns ear boost lifetime`() async throws {
let state = AppState(preview: true)
state.triggerVoiceEars(ttl: 60)
state.triggerVoiceEars(ttl: 0.05)
#expect(state.earBoostActive)
let deadline = ContinuousClock.now + .seconds(1)
while state.earBoostActive, ContinuousClock.now < deadline {
try await Task.sleep(for: .milliseconds(10))
}
#expect(!state.earBoostActive)
}
}