67 lines
2.4 KiB
Swift
67 lines
2.4 KiB
Swift
import XCTest
|
|
@testable import puter
|
|
|
|
final class SamplingDemandTests: XCTestCase {
|
|
func testNoConsumerMeansNoTimer() {
|
|
let demand = make(active: false)
|
|
XCTAssertNil(demand.interval)
|
|
XCTAssertFalse(demand.processInventory)
|
|
XCTAssertFalse(demand.hardware)
|
|
XCTAssertFalse(demand.services)
|
|
}
|
|
|
|
func testBackgroundMenuUsesLightweightCountersOnly() {
|
|
let demand = make(active: false, menu: true)
|
|
XCTAssertEqual(demand.interval, .seconds(10))
|
|
XCTAssertTrue(demand.telemetry)
|
|
XCTAssertFalse(demand.processInventory)
|
|
XCTAssertFalse(demand.services)
|
|
XCTAssertFalse(demand.hardware)
|
|
}
|
|
|
|
func testSettingsWithoutConsumersIsIdle() {
|
|
XCTAssertNil(make(section: .settings).interval)
|
|
}
|
|
|
|
func testServicesOnlyScansVisibleServices() {
|
|
let demand = make(section: .services)
|
|
XCTAssertTrue(demand.services)
|
|
XCTAssertFalse(demand.telemetry)
|
|
XCTAssertFalse(demand.processInventory)
|
|
XCTAssertEqual(demand.interval, .seconds(3))
|
|
}
|
|
|
|
func testRecordingKeepsBackgroundTelemetry() {
|
|
let demand = make(active: false, recording: true)
|
|
XCTAssertTrue(demand.processInventory)
|
|
XCTAssertTrue(demand.telemetry)
|
|
XCTAssertTrue(demand.hardware)
|
|
XCTAssertEqual(demand.interval, UpdateSpeed.normal.interval)
|
|
}
|
|
|
|
func testPauseStopsEvenRecordingTimer() {
|
|
XCTAssertNil(make(speed: .paused, recording: true, menu: true).interval)
|
|
}
|
|
|
|
func testPowerMenuOnlyNeedsHardware() {
|
|
let demand = make(active: false, menu: true, power: true)
|
|
XCTAssertTrue(demand.hardware)
|
|
XCTAssertFalse(demand.telemetry)
|
|
XCTAssertFalse(demand.processInventory)
|
|
}
|
|
|
|
func testAlertsRetainSystemSamplingWithoutProcessScan() {
|
|
let demand = make(active: false, alerts: true)
|
|
XCTAssertTrue(demand.telemetry)
|
|
XCTAssertFalse(demand.processInventory)
|
|
XCTAssertNotNil(demand.interval)
|
|
}
|
|
|
|
private func make(active: Bool = true, section: TaskSection = .processes,
|
|
speed: UpdateSpeed = .normal, recording: Bool = false,
|
|
alerts: Bool = false, menu: Bool = false, power: Bool = false) -> SamplingDemand {
|
|
SamplingDemand(active: active, section: section, speed: speed,
|
|
recording: recording, alerts: alerts, menuBar: menu, powerMenu: power)
|
|
}
|
|
}
|