native first
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import XCTest
|
||||
@testable import MastermindPOCCore
|
||||
|
||||
final class AudioModelTests: XCTestCase {
|
||||
func testPCMFrameStoresSidecarCompatibleAudioMetadata() {
|
||||
let data = Data([0x00, 0x00, 0xff, 0x7f])
|
||||
let timestamp = Date(timeIntervalSince1970: 42)
|
||||
|
||||
let frame = PCMFrame(
|
||||
source: .microphone,
|
||||
sampleRate: 16_000,
|
||||
channels: 1,
|
||||
pcmS16LE: data,
|
||||
timestamp: timestamp
|
||||
)
|
||||
|
||||
XCTAssertEqual(frame.source, .microphone)
|
||||
XCTAssertEqual(frame.sampleRate, 16_000)
|
||||
XCTAssertEqual(frame.channels, 1)
|
||||
XCTAssertEqual(frame.pcmS16LE, data)
|
||||
XCTAssertEqual(frame.timestamp, timestamp)
|
||||
}
|
||||
|
||||
func testPCM16LEClampsAndEncodesLittleEndianSamples() {
|
||||
let encoded = PCM16LE.encode(samples: [-2.0, -1.0, 0.0, 0.5, 2.0])
|
||||
|
||||
XCTAssertEqual(
|
||||
Array(encoded),
|
||||
[
|
||||
0x00, 0x80,
|
||||
0x00, 0x80,
|
||||
0x00, 0x00,
|
||||
0x00, 0x40,
|
||||
0xff, 0x7f,
|
||||
]
|
||||
)
|
||||
}
|
||||
|
||||
func testAudioStatsCountMicrophoneAndSystemFramesSeparately() {
|
||||
var stats = AudioPipelineStats()
|
||||
|
||||
stats.recordFrame(source: .microphone, byteCount: 320)
|
||||
stats.recordFrame(source: .system, byteCount: 640)
|
||||
stats.recordFrame(source: .microphone, byteCount: 160)
|
||||
|
||||
XCTAssertEqual(stats.microphoneFrames, 2)
|
||||
XCTAssertEqual(stats.microphoneBytes, 480)
|
||||
XCTAssertEqual(stats.systemFrames, 1)
|
||||
XCTAssertEqual(stats.systemBytes, 640)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
import XCTest
|
||||
@testable import MastermindPOCCore
|
||||
|
||||
final class OverlayActionsTests: XCTestCase {
|
||||
func testOverlayActionsInvokeInjectedCallbacks() {
|
||||
var openedSettings = false
|
||||
var hidOverlay = false
|
||||
var quitApp = false
|
||||
|
||||
let actions = OverlayActions(
|
||||
openSettings: { openedSettings = true },
|
||||
hideOverlay: { hidOverlay = true },
|
||||
quitApp: { quitApp = true }
|
||||
)
|
||||
|
||||
actions.openSettings()
|
||||
actions.hideOverlay()
|
||||
actions.quitApp()
|
||||
|
||||
XCTAssertTrue(openedSettings)
|
||||
XCTAssertTrue(hidOverlay)
|
||||
XCTAssertTrue(quitApp)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import XCTest
|
||||
@testable import MastermindPOCCore
|
||||
|
||||
final class OverlaySettingsTests: XCTestCase {
|
||||
func testDefaultOpacityIsReadableHudDefault() {
|
||||
XCTAssertEqual(OverlaySettings.default.backgroundOpacity, 0.72, accuracy: 0.0001)
|
||||
}
|
||||
|
||||
func testOpacityBelowMinimumClampsToMinimum() {
|
||||
let settings = OverlaySettings(backgroundOpacity: 0.1)
|
||||
|
||||
XCTAssertEqual(settings.backgroundOpacity, 0.35, accuracy: 0.0001)
|
||||
}
|
||||
|
||||
func testOpacityAboveMaximumClampsToMaximum() {
|
||||
let settings = OverlaySettings(backgroundOpacity: 1.0)
|
||||
|
||||
XCTAssertEqual(settings.backgroundOpacity, 0.95, accuracy: 0.0001)
|
||||
}
|
||||
|
||||
func testValidOpacityStaysUnchanged() {
|
||||
let settings = OverlaySettings(backgroundOpacity: 0.64)
|
||||
|
||||
XCTAssertEqual(settings.backgroundOpacity, 0.64, accuracy: 0.0001)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import XCTest
|
||||
@testable import MastermindPOCCore
|
||||
|
||||
final class TrustStatusTests: XCTestCase {
|
||||
func testMenuBarTitlesDescribeVisibleAssistantState() {
|
||||
XCTAssertEqual(TrustStatus.idle.menuBarTitle, "Mastermind: Idle")
|
||||
XCTAssertEqual(TrustStatus.listening.menuBarTitle, "Mastermind: Listening")
|
||||
XCTAssertEqual(TrustStatus.screenContext.menuBarTitle, "Mastermind: Screen")
|
||||
XCTAssertEqual(TrustStatus.systemAudio.menuBarTitle, "Mastermind: System Audio")
|
||||
XCTAssertEqual(TrustStatus.paused.menuBarTitle, "Mastermind: Paused")
|
||||
XCTAssertEqual(TrustStatus.error("No permission").menuBarTitle, "Mastermind: Error")
|
||||
}
|
||||
|
||||
func testCaptureStatesIdentifyActiveCapture() {
|
||||
XCTAssertFalse(TrustStatus.idle.isCapturing)
|
||||
XCTAssertFalse(TrustStatus.paused.isCapturing)
|
||||
XCTAssertTrue(TrustStatus.listening.isCapturing)
|
||||
XCTAssertTrue(TrustStatus.screenContext.isCapturing)
|
||||
XCTAssertTrue(TrustStatus.systemAudio.isCapturing)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user