multitouch 0.3.2

Raw macOS multitouch, gesture recognition, device monitoring, and Force Touch haptics
Documentation
use multitouch::GestureTypes;

#[test]
fn behaves_like_an_option_set() {
    let all = GestureTypes::ALL;
    assert!(all.contains(GestureTypes::SWIPE | GestureTypes::ROTATION));
    assert_eq!(all.bits(), 0b111);
    assert_eq!(
        GestureTypes::from_bits(0b101),
        GestureTypes::SWIPE | GestureTypes::ROTATION
    );

    assert!(GestureTypes::default().is_empty());
    assert_eq!(GestureTypes::default(), GestureTypes::NONE);

    let swipe_magnify = GestureTypes::SWIPE | GestureTypes::MAGNIFY;
    assert_eq!(all - GestureTypes::ROTATION, swipe_magnify);
    assert_eq!(all.difference(swipe_magnify), GestureTypes::ROTATION);
    assert_eq!(swipe_magnify & GestureTypes::MAGNIFY, GestureTypes::MAGNIFY);
    assert_eq!(swipe_magnify ^ GestureTypes::ALL, GestureTypes::ROTATION);
    assert!(swipe_magnify.intersects(GestureTypes::MAGNIFY));
    assert!(!swipe_magnify.intersects(GestureTypes::ROTATION));
    assert!(!swipe_magnify.contains(GestureTypes::ALL));

    let mut set = GestureTypes::NONE;
    set.insert(GestureTypes::SWIPE);
    set |= GestureTypes::ROTATION;
    assert_eq!(set.bits(), 0b101);
    set.remove(GestureTypes::SWIPE);
    set -= GestureTypes::MAGNIFY;
    assert_eq!(set, GestureTypes::ROTATION);
    set &= GestureTypes::SWIPE;
    assert!(set.is_empty());
}