feat(input-server): expand protocol with pointer, scroll, and gamepad events
This commit is contained in:
@@ -14,14 +14,14 @@ fn wait_request_roundtrip() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn key_down_response_roundtrip() {
|
||||
fn key_down_roundtrip() {
|
||||
let resp = InputResponse::Event(InputEvent::KeyDown(Key::Up));
|
||||
let words = resp.encode();
|
||||
assert_eq!(InputResponse::decode(words), Some(resp));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn key_up_response_roundtrip() {
|
||||
fn key_up_roundtrip() {
|
||||
let resp = InputResponse::Event(InputEvent::KeyUp(Key::Left));
|
||||
let words = resp.encode();
|
||||
assert_eq!(InputResponse::decode(words), Some(resp));
|
||||
@@ -34,12 +34,84 @@ fn char_key_roundtrip() {
|
||||
assert_eq!(InputResponse::decode(words), Some(resp));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn space_tab_backspace_roundtrip() {
|
||||
for key in [Key::Space, Key::Tab, Key::Backspace] {
|
||||
let resp = InputResponse::Event(InputEvent::KeyDown(key));
|
||||
assert_eq!(InputResponse::decode(resp.encode()), Some(resp));
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn no_event_roundtrip() {
|
||||
let words = InputResponse::NoEvent.encode();
|
||||
assert_eq!(InputResponse::decode(words), Some(InputResponse::NoEvent));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pointer_down_roundtrip() {
|
||||
let resp = InputResponse::Event(InputEvent::PointerDown { id: 0, x: 100, y: 200 });
|
||||
assert_eq!(InputResponse::decode(resp.encode()), Some(resp));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pointer_move_roundtrip() {
|
||||
let resp = InputResponse::Event(InputEvent::PointerMove { id: 1, x: 300, y: 400 });
|
||||
assert_eq!(InputResponse::decode(resp.encode()), Some(resp));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pointer_up_roundtrip() {
|
||||
let resp = InputResponse::Event(InputEvent::PointerUp { id: 2, x: 50, y: 60 });
|
||||
assert_eq!(InputResponse::decode(resp.encode()), Some(resp));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn scroll_roundtrip() {
|
||||
let resp = InputResponse::Event(InputEvent::Scroll { dx: -3, dy: 5 });
|
||||
assert_eq!(InputResponse::decode(resp.encode()), Some(resp));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn gamepad_button_roundtrip() {
|
||||
let resp = InputResponse::Event(InputEvent::GamepadButton {
|
||||
button: GamepadButton::South,
|
||||
pressed: true,
|
||||
});
|
||||
assert_eq!(InputResponse::decode(resp.encode()), Some(resp));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn gamepad_button_released_roundtrip() {
|
||||
let resp = InputResponse::Event(InputEvent::GamepadButton {
|
||||
button: GamepadButton::Start,
|
||||
pressed: false,
|
||||
});
|
||||
assert_eq!(InputResponse::decode(resp.encode()), Some(resp));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn gamepad_axis_roundtrip() {
|
||||
let resp = InputResponse::Event(InputEvent::GamepadAxis {
|
||||
axis: Axis::LeftX,
|
||||
value: -128,
|
||||
});
|
||||
assert_eq!(InputResponse::decode(resp.encode()), Some(resp));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn all_gamepad_buttons_roundtrip() {
|
||||
let buttons = [
|
||||
GamepadButton::South, GamepadButton::East, GamepadButton::North, GamepadButton::West,
|
||||
GamepadButton::DpadUp, GamepadButton::DpadDown, GamepadButton::DpadLeft, GamepadButton::DpadRight,
|
||||
GamepadButton::Start, GamepadButton::Select,
|
||||
];
|
||||
for button in buttons {
|
||||
let resp = InputResponse::Event(InputEvent::GamepadButton { button, pressed: true });
|
||||
assert_eq!(InputResponse::decode(resp.encode()), Some(resp));
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn invalid_request_returns_none() {
|
||||
assert!(InputRequest::decode([99, 0, 0, 0]).is_none());
|
||||
|
||||
Reference in New Issue
Block a user