55 lines
1.8 KiB
Swift
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"])
|
|
}
|
|
}
|