55 lines
1.9 KiB
Swift
55 lines
1.9 KiB
Swift
import XCTest
|
|
@testable import MacMonitor
|
|
|
|
final class MMGPUTests: XCTestCase {
|
|
|
|
func testGPUMetricsCalculation() {
|
|
let mockGPUs: [[String: Any]] = [
|
|
[
|
|
"name": "Intel Iris Plus Graphics 655",
|
|
"type": "Integrated",
|
|
"utilization": 15.0,
|
|
"vramUsedBytes": 500_000_000,
|
|
"vramTotalBytes": 1_500_000_000,
|
|
"temperature": 45.0,
|
|
"isLowPower": true,
|
|
"isRemovable": false
|
|
],
|
|
[
|
|
"name": "AMD Radeon Pro 560X",
|
|
"type": "Discrete",
|
|
"utilization": 75.0,
|
|
"vramUsedBytes": 3_000_000_000,
|
|
"vramTotalBytes": 4_000_000_000,
|
|
"temperature": 68.0,
|
|
"isLowPower": false,
|
|
"isRemovable": false
|
|
]
|
|
]
|
|
|
|
let metrics = MMGPUTelemetryProvider.calculateGPUMetrics(withDevices: mockGPUs)
|
|
|
|
let count = metrics["gpuCount"] as? Int ?? 0
|
|
let avg = metrics["averageUtilization"] as? Double ?? 0
|
|
let peak = metrics["peakUtilization"] as? Double ?? 0
|
|
let active = metrics["activeGPUName"] as? String ?? ""
|
|
|
|
XCTAssertEqual(count, 2)
|
|
XCTAssertEqual(avg, 45.0, accuracy: 0.1)
|
|
XCTAssertEqual(peak, 75.0, accuracy: 0.1)
|
|
XCTAssertEqual(active, "AMD Radeon Pro 560X")
|
|
}
|
|
|
|
func testLiveGPUProvider() throws {
|
|
let provider = MMGPUTelemetryProvider()
|
|
XCTAssertEqual(provider.domain, .gpu)
|
|
XCTAssertEqual(provider.providerIdentifier, "com.i3omb.macmonitor.telemetry.gpu")
|
|
|
|
let sample = try provider.sampleTelemetry()
|
|
XCTAssertNotNil(sample)
|
|
XCTAssertNotNil(sample["gpuCount"])
|
|
XCTAssertNotNil(sample["devices"])
|
|
XCTAssertNotNil(sample["activeGPUName"])
|
|
}
|
|
}
|