39 lines
2.0 KiB
Swift
39 lines
2.0 KiB
Swift
import GameController
|
|
|
|
@main struct InputChecks {
|
|
@MainActor static func main() {
|
|
let controller=GCController.withExtendedGamepad()
|
|
let gamepad=controller.extendedGamepad!
|
|
var connected=[controller]
|
|
let tester=ControllerTester(query:{connected})
|
|
precondition(!tester.confirmed && !tester.state.active)
|
|
gamepad.buttonA.setValue(1)
|
|
gamepad.leftShoulder.setValue(1)
|
|
gamepad.dpad.setValueForXAxis(-1,yAxis:1)
|
|
gamepad.leftThumbstick.setValueForXAxis(0.75,yAxis:-0.5)
|
|
gamepad.rightThumbstick.setValueForXAxis(-0.5,yAxis:0.25)
|
|
gamepad.leftTrigger.setValue(0.6)
|
|
tester.sample()
|
|
precondition(tester.state.buttons.contains("a") && tester.state.buttons.contains("lb"))
|
|
precondition(tester.state.buttons.contains("left") && tester.state.buttons.contains("up"))
|
|
precondition(abs(tester.state.lx-0.75)<0.01 && abs(tester.state.ly+0.5)<0.01)
|
|
precondition(abs(tester.state.rx+0.5)<0.01 && abs(tester.state.ry-0.25)<0.01)
|
|
precondition(abs(tester.state.lt-0.6)<0.01 && tester.confirmed)
|
|
gamepad.buttonA.setValue(0);gamepad.leftShoulder.setValue(0)
|
|
gamepad.dpad.setValueForXAxis(0,yAxis:0)
|
|
gamepad.leftThumbstick.setValueForXAxis(0,yAxis:0)
|
|
gamepad.rightThumbstick.setValueForXAxis(0,yAxis:0)
|
|
gamepad.leftTrigger.setValue(0)
|
|
tester.sample()
|
|
precondition(!tester.state.active && tester.state.buttons.isEmpty && tester.confirmed)
|
|
let second=GCController.withExtendedGamepad()
|
|
connected=[controller,second];tester.sample()
|
|
tester.selected=ObjectIdentifier(second)
|
|
gamepad.buttonA.setValue(1);tester.sample()
|
|
precondition(!tester.state.active && !tester.confirmed,"A different controller must not light up the selected gamepad")
|
|
connected=[];tester.sample()
|
|
precondition(tester.devices.isEmpty && !tester.state.active && !tester.confirmed)
|
|
print("Live input: buttons, D-pad, both sticks, trigger pressure, release and disconnect passed")
|
|
}
|
|
}
|