49 lines
1.6 KiB
Swift
49 lines
1.6 KiB
Swift
import XCTest
|
|
@testable import MacMonitor
|
|
|
|
final class MMFanTests: XCTestCase {
|
|
|
|
func testFanUtilizationCalculation() {
|
|
let fanList: [[String: NSNumber]] = [
|
|
[
|
|
"currentRPM": NSNumber(value: 2000.0),
|
|
"minRPM": NSNumber(value: 1200.0),
|
|
"maxRPM": NSNumber(value: 5000.0),
|
|
"targetRPM": NSNumber(value: 2000.0)
|
|
],
|
|
[
|
|
"currentRPM": NSNumber(value: 2500.0),
|
|
"minRPM": NSNumber(value: 1200.0),
|
|
"maxRPM": NSNumber(value: 5000.0),
|
|
"targetRPM": NSNumber(value: 2500.0)
|
|
]
|
|
]
|
|
|
|
let metrics = MMFanTelemetryProvider.calculateFanMetrics(fromFanList: fanList)
|
|
|
|
let count = metrics["fanCount"] as? Int ?? 0
|
|
let avgRPM = metrics["averageRPM"] as? Double ?? 0
|
|
let peakRPM = metrics["peakRPM"] as? Double ?? 0
|
|
let fans = metrics["fans"] as? [[String: Any]] ?? []
|
|
|
|
XCTAssertEqual(count, 2)
|
|
XCTAssertEqual(avgRPM, 2250.0, accuracy: 0.1)
|
|
XCTAssertEqual(peakRPM, 2500.0, accuracy: 0.1)
|
|
XCTAssertEqual(fans.count, 2)
|
|
|
|
let fan0 = fans[0]
|
|
let util0 = fan0["utilizationPercent"] as? Double ?? 0
|
|
// (2000 - 1200) / 3800 * 100 = 21.05%
|
|
XCTAssertEqual(util0, 21.05, accuracy: 0.1)
|
|
}
|
|
|
|
func testLiveFanProvider() throws {
|
|
let provider = MMFanTelemetryProvider()
|
|
XCTAssertEqual(provider.domain, .fan)
|
|
|
|
let sample = try provider.sampleTelemetry()
|
|
XCTAssertNotNil(sample)
|
|
XCTAssertNotNil(sample["fanCount"])
|
|
}
|
|
}
|