Files
TopManager/TopManagerTests/SettingsTests.swift
hariel1985 2e3574f6e3 Increment 5: Settings, launch-at-login & rich menu-bar HUD
- AppSettings (@MainActor, UserDefaults-persisted): refresh interval, menu-bar
  metric, notifications toggle, CPU/disk/low-battery alert thresholds,
  launch-at-login; pushes changes into live services; nonisolated clampInterval
- LoginItem via SMAppService (macOS 13+), register/unregister with error catch
- SystemMonitor: runtime-configurable refresh cadence (was hardcoded 3s)
- SettingsView (⌘,): General (login, interval, menu-bar metric) + Alerts
  (notifications + thresholds) tabs
- MenuBarLabel: user-selectable menu-bar metric (CPU/Memory/Health/Download)
- Menu-bar dropdown: Top CPU Consumers with one-click quit
- 3 new tests (55 total); smoke: runs clean, Settings… menu registered

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 20:25:43 +02:00

28 sor
967 B
Swift

import XCTest
@testable import TopManager
final class SettingsTests: XCTestCase {
func testClampIntervalBounds() {
XCTAssertEqual(AppSettings.clampInterval(0.2), 1)
XCTAssertEqual(AppSettings.clampInterval(100), 30)
XCTAssertEqual(AppSettings.clampInterval(5), 5)
XCTAssertEqual(AppSettings.clampInterval(1), 1)
XCTAssertEqual(AppSettings.clampInterval(30), 30)
}
func testMenuBarMetricRoundTrip() {
for metric in MenuBarMetric.allCases {
XCTAssertEqual(MenuBarMetric(rawValue: metric.rawValue), metric)
}
XCTAssertNil(MenuBarMetric(rawValue: "nonexistent"))
}
func testMenuBarMetricCoversKeyMetrics() {
XCTAssertTrue(MenuBarMetric.allCases.contains(.cpu))
XCTAssertTrue(MenuBarMetric.allCases.contains(.memory))
XCTAssertTrue(MenuBarMetric.allCases.contains(.health))
XCTAssertTrue(MenuBarMetric.allCases.contains(.download))
}
}