Files
MacMonitor/Tests/MMCPUThermalTests.swift
T
gronod b47ffd72ca
MacMonitor CI/CD Pipeline / Build & Test (Intel x86_64) (push) Canceled after 0s
feat(thermal): implement MMCPUThermalProvider with package, per-core temps, and throttling (Issue #3)
2026-09-08 12:21:26 +01:00

55 lines
1.8 KiB
Swift

import XCTest
@testable import MacMonitor
final class MMCPUThermalTests: XCTestCase {
func testThermalMetricsCalculation() {
let pkgTemp = NSNumber(value: 55.0)
let coreDict: [String: NSNumber] = [
"TC0C": NSNumber(value: 52.0),
"TC1C": NSNumber(value: 56.0),
"TC2C": NSNumber(value: 54.0),
"TC3C": NSNumber(value: 58.0)
]
let metrics = MMCPUThermalProvider.calculateThermalMetrics(
withPackageTemp: pkgTemp,
coreTemps: coreDict,
thermalState: .nominal
)
let peak = metrics["peakCoreTemperature"] as? Double ?? 0
let avg = metrics["averageCoreTemperature"] as? Double ?? 0
let state = metrics["thermalPressureState"] as? String ?? ""
let isThrottling = metrics["isThrottling"] as? Bool ?? true
XCTAssertEqual(peak, 58.0, accuracy: 0.1)
XCTAssertEqual(avg, 55.0, accuracy: 0.1)
XCTAssertEqual(state, "Nominal")
XCTAssertFalse(isThrottling)
}
func testThermalThrottlingDetection() {
let metrics = MMCPUThermalProvider.calculateThermalMetrics(
withPackageTemp: NSNumber(value: 99.0),
coreTemps: [:],
thermalState: .serious
)
let isThrottling = metrics["isThrottling"] as? Bool ?? false
let state = metrics["thermalPressureState"] as? String ?? ""
XCTAssertTrue(isThrottling)
XCTAssertEqual(state, "Serious")
}
func testLiveCPUThermalProvider() throws {
let provider = MMCPUThermalProvider()
XCTAssertEqual(provider.domain, .thermal)
let sample = try provider.sampleTelemetry()
XCTAssertNotNil(sample)
XCTAssertNotNil(sample["thermalPressureState"])
}
}