111 lines
3.7 KiB
Swift
111 lines
3.7 KiB
Swift
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)
|
|
}
|
|
}
|