81 lines
3.8 KiB
Swift
81 lines
3.8 KiB
Swift
import XCTest
|
|
@testable import MacMonitor
|
|
|
|
final class MMComponentThermalTests: XCTestCase {
|
|
|
|
func testCategoryClassification() {
|
|
XCTAssertEqual(MMComponentThermalProvider.category(forKey: "TPCD"), "PCH / Chipset")
|
|
XCTAssertEqual(MMComponentThermalProvider.category(forKey: "TP0P"), "PCH / Chipset")
|
|
XCTAssertEqual(MMComponentThermalProvider.category(forKey: "Th0H"), "Heatsink")
|
|
XCTAssertEqual(MMComponentThermalProvider.category(forKey: "Th1H"), "Heatsink")
|
|
XCTAssertEqual(MMComponentThermalProvider.category(forKey: "TM0P"), "Memory")
|
|
XCTAssertEqual(MMComponentThermalProvider.category(forKey: "TM1S"), "Memory")
|
|
XCTAssertEqual(MMComponentThermalProvider.category(forKey: "Tp0P"), "Power Supply")
|
|
XCTAssertEqual(MMComponentThermalProvider.category(forKey: "TA0P"), "Ambient / Enclosure")
|
|
XCTAssertEqual(MMComponentThermalProvider.category(forKey: "TTLD"), "Thunderbolt / IO")
|
|
XCTAssertEqual(MMComponentThermalProvider.category(forKey: "TB0T"), "Thunderbolt / IO")
|
|
XCTAssertEqual(MMComponentThermalProvider.category(forKey: "ZZ99"), "Other")
|
|
}
|
|
|
|
func testHumanReadableNames() {
|
|
XCTAssertEqual(MMComponentThermalProvider.humanReadableName(forKey: "TPCD"), "Platform Controller Hub (Die)")
|
|
XCTAssertEqual(MMComponentThermalProvider.humanReadableName(forKey: "Th0H"), "Main Heatsink A")
|
|
XCTAssertEqual(MMComponentThermalProvider.humanReadableName(forKey: "TA0P"), "Ambient Air Intake")
|
|
XCTAssertEqual(MMComponentThermalProvider.humanReadableName(forKey: "CUSTOM"), "CUSTOM")
|
|
}
|
|
|
|
func testComponentMetricsCalculation() {
|
|
let readings: [String: NSNumber] = [
|
|
"TPCD": NSNumber(value: 65.5),
|
|
"Th0H": NSNumber(value: 48.0),
|
|
"TM0P": NSNumber(value: 42.0),
|
|
"TA0P": NSNumber(value: 28.5)
|
|
]
|
|
|
|
let metrics = MMComponentThermalProvider.calculateComponentMetrics(from: readings)
|
|
|
|
let peak = metrics["peakTemperature"] as? Double ?? 0
|
|
let avg = metrics["averageTemperature"] as? Double ?? 0
|
|
let count = metrics["sensorCount"] as? Int ?? 0
|
|
let components = metrics["components"] as? [[String: Any]] ?? []
|
|
let categorized = metrics["categorized"] as? [String: [[String: Any]]] ?? [:]
|
|
|
|
XCTAssertEqual(peak, 65.5, accuracy: 0.1)
|
|
XCTAssertEqual(avg, (65.5 + 48.0 + 42.0 + 28.5) / 4.0, accuracy: 0.1)
|
|
XCTAssertEqual(count, 4)
|
|
XCTAssertEqual(components.count, 4)
|
|
|
|
let pchList = categorized["PCH / Chipset"]
|
|
XCTAssertNotNil(pchList)
|
|
let firstPchName = pchList?.first?["name"] as? String
|
|
XCTAssertEqual(firstPchName, "Platform Controller Hub (Die)")
|
|
XCTAssertEqual(categorized["Heatsink"]?.count, 1)
|
|
XCTAssertEqual(categorized["Memory"]?.count, 1)
|
|
XCTAssertEqual(categorized["Ambient / Enclosure"]?.count, 1)
|
|
}
|
|
|
|
func testEmptyReadingsCalculation() {
|
|
let metrics = MMComponentThermalProvider.calculateComponentMetrics(from: [:])
|
|
|
|
let peak = metrics["peakTemperature"] as? Double ?? -1
|
|
let avg = metrics["averageTemperature"] as? Double ?? -1
|
|
let count = metrics["sensorCount"] as? Int ?? -1
|
|
|
|
XCTAssertEqual(peak, 0.0)
|
|
XCTAssertEqual(avg, 0.0)
|
|
XCTAssertEqual(count, 0)
|
|
}
|
|
|
|
func testLiveComponentThermalProvider() throws {
|
|
let provider = MMComponentThermalProvider()
|
|
XCTAssertEqual(provider.domain, .thermal)
|
|
XCTAssertEqual(provider.providerIdentifier, "com.i3omb.macmonitor.telemetry.thermal.components")
|
|
|
|
let sample = try provider.sampleTelemetry()
|
|
XCTAssertNotNil(sample)
|
|
XCTAssertNotNil(sample["sensorCount"])
|
|
XCTAssertNotNil(sample["components"])
|
|
XCTAssertNotNil(sample["categorized"])
|
|
}
|
|
}
|