81 lines
2.4 KiB
Swift
81 lines
2.4 KiB
Swift
//
|
|
// MMAudioTests.swift
|
|
// MacMonitorTests
|
|
//
|
|
// Unit and integration tests for MMAudioTelemetryProvider.
|
|
//
|
|
|
|
import XCTest
|
|
@testable import MacMonitor
|
|
|
|
final class MMAudioTests: XCTestCase {
|
|
var provider: MMAudioTelemetryProvider!
|
|
|
|
override func setUp() {
|
|
super.setUp()
|
|
provider = MMAudioTelemetryProvider()
|
|
}
|
|
|
|
override func tearDown() {
|
|
provider = nil
|
|
super.tearDown()
|
|
}
|
|
|
|
func testDomainAndIdentifier() {
|
|
XCTAssertEqual(provider.domain, .audio)
|
|
XCTAssertEqual(provider.providerIdentifier, "com.i3omb.macmonitor.telemetry.audio")
|
|
XCTAssertTrue(provider.isAvailable)
|
|
}
|
|
|
|
func testSampleAudioDevicesLive() {
|
|
do {
|
|
let sample = try provider.sampleTelemetry()
|
|
XCTAssertNotNil(sample)
|
|
|
|
let count = sample["deviceCount"] as? Int ?? 0
|
|
XCTAssertGreaterThanOrEqual(count, 0)
|
|
|
|
let devices = sample["devices"] as? [[String: Any]] ?? []
|
|
XCTAssertEqual(devices.count, count)
|
|
|
|
if count > 0 {
|
|
for dev in devices {
|
|
XCTAssertNotNil(dev["name"])
|
|
XCTAssertNotNil(dev["deviceID"])
|
|
XCTAssertNotNil(dev["isInput"])
|
|
XCTAssertNotNil(dev["isOutput"])
|
|
}
|
|
}
|
|
} catch {
|
|
XCTFail("sampleTelemetry threw error: \(error)")
|
|
}
|
|
}
|
|
|
|
func testAudioDeviceModel() {
|
|
let dev = MMAudioDevice()
|
|
dev.deviceID = 42
|
|
dev.name = "External USB DAC"
|
|
dev.manufacturer = "FiiO"
|
|
dev.uid = "USB:1234"
|
|
dev.isInput = false
|
|
dev.isOutput = true
|
|
dev.isDefaultOutput = true
|
|
dev.isDefaultInput = false
|
|
dev.sampleRate = 96000.0
|
|
dev.channelCount = 2
|
|
dev.volume = 0.75
|
|
dev.isMuted = false
|
|
|
|
let dict = dev.toDictionary()
|
|
XCTAssertEqual(dict["deviceID"] as? UInt32, 42)
|
|
XCTAssertEqual(dict["name"] as? String, "External USB DAC")
|
|
XCTAssertEqual(dict["manufacturer"] as? String, "FiiO")
|
|
XCTAssertEqual(dict["isOutput"] as? Bool, true)
|
|
XCTAssertEqual(dict["isDefaultOutput"] as? Bool, true)
|
|
XCTAssertEqual(dict["sampleRate"] as? Double, 96000.0)
|
|
XCTAssertEqual(dict["channelCount"] as? UInt32, 2)
|
|
XCTAssertEqual(dict["volume"] as? Float, 0.75)
|
|
XCTAssertEqual(dict["isMuted"] as? Bool, false)
|
|
}
|
|
}
|