import XCTest @testable import MacTools @testable import HideNotchPlugin @MainActor final class HideNotchPluginTests: XCTestCase { func testPanelStateDisablesSwitchWhenNoSupportedDisplayExists() { let controller = MockHideNotchWallpaperController() controller.snapshotValue = HideNotchSnapshot( hasSupportedDisplay: false, supportedDisplayCount: 0, managedDisplayCount: 0, unsupportedVisibleDisplayCount: 0, pendingRestoreCount: 0, isEnabled: false, isProcessing: false, isAwaitingDisplay: false, errorMessage: nil ) let plugin = HideNotchPlugin(controller: controller) let state = plugin.primaryPanelState XCTAssertEqual(state.subtitle, "未检测到刘海屏") XCTAssertFalse(state.isEnabled) XCTAssertFalse(state.isOn) } func testPanelStateShowsWaitingSubtitleWhenEnabledWithoutSupportedDisplay() { let controller = MockHideNotchWallpaperController() controller.snapshotValue = HideNotchSnapshot( hasSupportedDisplay: false, supportedDisplayCount: 0, managedDisplayCount: 0, unsupportedVisibleDisplayCount: 0, pendingRestoreCount: 0, isEnabled: true, isProcessing: false, isAwaitingDisplay: true, errorMessage: nil ) let plugin = HideNotchPlugin(controller: controller) XCTAssertEqual(plugin.primaryPanelState.subtitle, "已开启") XCTAssertTrue(plugin.primaryPanelState.isOn) XCTAssertFalse(plugin.primaryPanelState.isEnabled) } func testPanelStateShowsManagedDisplayCountWhenEnabled() { let controller = MockHideNotchWallpaperController() controller.snapshotValue = HideNotchSnapshot( hasSupportedDisplay: true, supportedDisplayCount: 2, managedDisplayCount: 2, unsupportedVisibleDisplayCount: 0, pendingRestoreCount: 0, isEnabled: true, isProcessing: false, isAwaitingDisplay: false, errorMessage: nil ) let plugin = HideNotchPlugin(controller: controller) XCTAssertEqual(plugin.primaryPanelState.subtitle, "已开启") XCTAssertTrue(plugin.primaryPanelState.isOn) } func testToggleOnForwardsToController() { let controller = MockHideNotchWallpaperController() controller.snapshotValue = HideNotchSnapshot( hasSupportedDisplay: true, supportedDisplayCount: 1, managedDisplayCount: 0, unsupportedVisibleDisplayCount: 0, pendingRestoreCount: 0, isEnabled: false, isProcessing: false, isAwaitingDisplay: false, errorMessage: nil ) let plugin = HideNotchPlugin(controller: controller) plugin.handleAction(.setSwitch(true)) XCTAssertEqual(controller.setEnabledCalls, [true]) XCTAssertTrue(plugin.primaryPanelState.isOn) } func testPanelStateShowsEnabledSubtitleWhileProcessing() { let controller = MockHideNotchWallpaperController() controller.snapshotValue = HideNotchSnapshot( hasSupportedDisplay: true, supportedDisplayCount: 1, managedDisplayCount: 0, unsupportedVisibleDisplayCount: 0, pendingRestoreCount: 0, isEnabled: true, isProcessing: true, isAwaitingDisplay: false, errorMessage: nil ) let plugin = HideNotchPlugin(controller: controller) XCTAssertEqual(plugin.primaryPanelState.subtitle, "已开启") XCTAssertFalse(plugin.primaryPanelState.isEnabled) } }