import Testing
@testable import WebTerm

/// T-iPad-3 · KeyBar 可见性纯谓词。硬件键盘在场时软键盘 KeyBar
/// （`inputAccessoryView`）冗余 → 默认隐；无硬件键盘 → 显（iPhone 行为不变）；
/// 用户显式切换（`userOverride`）始终压过自动默认。硬件态经参数注入（模拟器
/// 硬件键盘状态未必可脚本化 —— 谓词单测是真值源）。
@Suite("KeyBarVisibility (T-iPad-3)")
struct KeyBarVisibilityTests {
    // MARK: - 自动默认（跟随硬件键盘在场）

    @Test("硬件键盘在场 + 无用户覆盖 → 隐藏（软 KeyBar 冗余）")
    func hardwarePresentAutoHides() {
        #expect(KeyBarVisibility.isVisible(hardwareKeyboardPresent: true, userOverride: nil) == false)
    }

    @Test("无硬件键盘 + 无用户覆盖 → 显示（iPhone 默认，零回归）")
    func noHardwareAutoShows() {
        #expect(KeyBarVisibility.isVisible(hardwareKeyboardPresent: false, userOverride: nil) == true)
    }

    // MARK: - 用户覆盖压过自动

    @Test("用户强制显示压过硬件在场的自动隐藏")
    func userForceShowWinsOverHardware() {
        #expect(KeyBarVisibility.isVisible(hardwareKeyboardPresent: true, userOverride: true) == true)
    }

    @Test("用户强制隐藏压过无硬件的自动显示")
    func userForceHideWinsOverNoHardware() {
        #expect(KeyBarVisibility.isVisible(hardwareKeyboardPresent: false, userOverride: false) == false)
    }
}
