51 lines
1.8 KiB
Rust
51 lines
1.8 KiB
Rust
// file: crates/engines/engine-v1-sdl/unit_tests/swipe.rs
|
|
// version: 3
|
|
|
|
fn pointer(x: f32, y: f32) -> engine_v1_common::PointerState {
|
|
return engine_v1_common::PointerState::normalized(true, x, y);
|
|
}
|
|
|
|
#[test]
|
|
fn short_gesture_does_not_emit_direction() {
|
|
let input = super::apply_swipe_direction(engine_v1_common::InputState::none(), Some(pointer(0.5, 0.5)), pointer(0.52, 0.51));
|
|
assert!(!input.is_active(engine_v1_common::GameAction::Left));
|
|
assert!(!input.is_active(engine_v1_common::GameAction::Right));
|
|
assert!(!input.is_active(engine_v1_common::GameAction::Up));
|
|
assert!(!input.is_active(engine_v1_common::GameAction::Down));
|
|
}
|
|
|
|
#[test]
|
|
fn horizontal_swipe_uses_dominant_axis() {
|
|
let input = super::apply_swipe_direction(engine_v1_common::InputState::none(), Some(pointer(0.7, 0.5)), pointer(0.2, 0.55));
|
|
assert!(input.is_active(engine_v1_common::GameAction::Left));
|
|
}
|
|
|
|
#[test]
|
|
fn vertical_swipe_uses_dominant_axis() {
|
|
let input = super::apply_swipe_direction(engine_v1_common::InputState::none(), Some(pointer(0.5, 0.8)), pointer(0.55, 0.2));
|
|
assert!(input.is_active(engine_v1_common::GameAction::Up));
|
|
}
|
|
|
|
#[derive(Default)]
|
|
struct QuitAwareGame {
|
|
requests: u64,
|
|
}
|
|
|
|
impl engine_v1_common::EngineGame for QuitAwareGame {
|
|
fn update(&mut self, _frame: engine_v1_common::EngineFrame, _input: engine_v1_common::InputState) {
|
|
return;
|
|
}
|
|
|
|
fn quit_requested(&mut self, _request: engine_v1_common::QuitRequest) -> engine_v1_common::QuitDecision {
|
|
self.requests = self.requests.saturating_add(1);
|
|
return engine_v1_common::QuitDecision::Continue;
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn runtime_respects_game_quit_decision() {
|
|
let mut game = QuitAwareGame::default();
|
|
assert!(!super::quit_requested(&mut game, engine_v1_common::QuitSource::PlatformBack));
|
|
assert_eq!(game.requests, 1);
|
|
}
|