cranpose-foundation 0.1.164

Modifiers, nodes, and foundation elements for Cranpose
Documentation
use super::*;

fn pointer(kind: PointerEventKind, x: f32, y: f32) -> PointerEvent {
    PointerEvent::new(kind, Point { x, y }, Point { x, y })
}

#[test]
fn drag_starts_after_threshold_and_consumes_move() {
    let mut gesture = DragGesture::new();
    let down = pointer(PointerEventKind::Down, 0.0, 0.0);
    let move_inside_slop = pointer(PointerEventKind::Move, DRAG_THRESHOLD - 1.0, 0.0);
    let move_after_slop = pointer(PointerEventKind::Move, DRAG_THRESHOLD + 1.0, 0.0);

    assert_eq!(gesture.handle_event(&down), DragGestureEvent::None);
    assert_eq!(
        gesture.handle_event(&move_inside_slop),
        DragGestureEvent::None
    );
    assert!(!move_inside_slop.is_consumed());
    assert_eq!(
        gesture.handle_event(&move_after_slop),
        DragGestureEvent::Started {
            start: Point { x: 0.0, y: 0.0 },
            current: Point {
                x: DRAG_THRESHOLD + 1.0,
                y: 0.0
            },
        }
    );
    assert!(move_after_slop.is_consumed());
}

#[test]
fn drag_reports_delta_after_start() {
    let mut gesture = DragGesture::new();
    gesture.handle_event(&pointer(PointerEventKind::Down, 0.0, 0.0));
    gesture.handle_event(&pointer(PointerEventKind::Move, DRAG_THRESHOLD + 1.0, 0.0));

    assert_eq!(
        gesture.handle_event(&pointer(PointerEventKind::Move, DRAG_THRESHOLD + 3.0, 2.0)),
        DragGestureEvent::Dragged {
            delta: Point { x: 2.0, y: 2.0 },
            total: Point {
                x: DRAG_THRESHOLD + 3.0,
                y: 2.0
            },
            current: Point {
                x: DRAG_THRESHOLD + 3.0,
                y: 2.0
            },
        }
    );
}