133 lines
4.3 KiB
Rust
133 lines
4.3 KiB
Rust
use x11rb_protocol::protocol::xproto::EventMask;
|
|
|
|
#[test]
|
|
fn test_conversion() {
|
|
assert_eq!(0, u32::from(EventMask::NO_EVENT));
|
|
assert_eq!(1, u32::from(EventMask::KEY_PRESS));
|
|
assert_eq!(4, u32::from(EventMask::BUTTON_PRESS));
|
|
assert_eq!(Some(16u32), EventMask::ENTER_WINDOW.into());
|
|
assert_eq!(EventMask::NO_EVENT, 0u8.into());
|
|
assert_eq!(EventMask::KEY_PRESS, 1u8.into());
|
|
}
|
|
|
|
#[test]
|
|
fn test_bit_or() {
|
|
assert_eq!(
|
|
EventMask::KEY_PRESS,
|
|
EventMask::KEY_PRESS | EventMask::NO_EVENT
|
|
);
|
|
assert_eq!(EventMask::KEY_PRESS, 1 | EventMask::NO_EVENT);
|
|
assert_eq!(EventMask::KEY_PRESS, EventMask::NO_EVENT | 1);
|
|
|
|
let mut mask = EventMask::KEY_PRESS;
|
|
mask |= EventMask::BUTTON_PRESS;
|
|
assert_eq!(5, u32::from(mask));
|
|
|
|
let mut mask = EventMask::KEY_PRESS;
|
|
mask |= 4u32;
|
|
assert_eq!(5, u32::from(mask));
|
|
|
|
let mut mask = 1u32;
|
|
mask |= EventMask::BUTTON_PRESS;
|
|
assert_eq!(5, mask);
|
|
}
|
|
|
|
#[test]
|
|
fn test_bit_and() {
|
|
assert_eq!(
|
|
EventMask::NO_EVENT,
|
|
EventMask::KEY_PRESS & EventMask::NO_EVENT
|
|
);
|
|
assert_eq!(
|
|
EventMask::KEY_PRESS,
|
|
EventMask::KEY_PRESS & EventMask::KEY_PRESS
|
|
);
|
|
assert_eq!(
|
|
EventMask::KEY_PRESS,
|
|
EventMask::from(5u32) & EventMask::KEY_PRESS
|
|
);
|
|
assert_eq!(EventMask::KEY_PRESS, 5 & EventMask::KEY_PRESS);
|
|
assert_eq!(EventMask::KEY_PRESS, EventMask::KEY_PRESS & 5);
|
|
|
|
let mut mask = EventMask::from(5u32);
|
|
mask &= EventMask::BUTTON_PRESS;
|
|
assert_eq!(EventMask::BUTTON_PRESS, mask);
|
|
|
|
let mut mask = EventMask::from(5u32);
|
|
mask &= 4u32;
|
|
assert_eq!(EventMask::BUTTON_PRESS, mask);
|
|
|
|
let mut mask = 7u32;
|
|
mask &= EventMask::from(21u32);
|
|
assert_eq!(5, mask);
|
|
}
|
|
|
|
#[test]
|
|
fn test_contains() {
|
|
let mask = EventMask::KEY_PRESS;
|
|
assert!(mask.contains(EventMask::KEY_PRESS));
|
|
assert!(mask.contains(EventMask::NO_EVENT));
|
|
assert!(!mask.contains(EventMask::KEY_PRESS | EventMask::BUTTON_PRESS));
|
|
assert!(!mask.contains(EventMask::BUTTON_PRESS));
|
|
|
|
let mask = EventMask::KEY_PRESS | EventMask::BUTTON_PRESS;
|
|
assert!(mask.contains(EventMask::KEY_PRESS));
|
|
assert!(mask.contains(EventMask::BUTTON_PRESS));
|
|
assert!(mask.contains(EventMask::KEY_PRESS | EventMask::BUTTON_PRESS));
|
|
assert!(!mask.contains(EventMask::ENTER_WINDOW));
|
|
assert!(!mask.contains(EventMask::ENTER_WINDOW | EventMask::BUTTON_PRESS));
|
|
|
|
assert!(mask.contains(1u32));
|
|
assert!(mask.contains(4u32));
|
|
assert!(mask.contains(5u32));
|
|
assert!(!mask.contains(16u32));
|
|
assert!(!mask.contains(20u32));
|
|
}
|
|
|
|
#[test]
|
|
fn test_intersects() {
|
|
let mask = EventMask::KEY_PRESS;
|
|
assert!(mask.intersects(EventMask::KEY_PRESS));
|
|
assert!(!mask.intersects(EventMask::NO_EVENT));
|
|
assert!(mask.intersects(EventMask::KEY_PRESS | EventMask::BUTTON_PRESS));
|
|
assert!(!mask.intersects(EventMask::BUTTON_PRESS));
|
|
|
|
let mask = EventMask::KEY_PRESS | EventMask::BUTTON_PRESS;
|
|
assert!(mask.intersects(EventMask::KEY_PRESS));
|
|
assert!(mask.intersects(EventMask::BUTTON_PRESS));
|
|
assert!(mask.intersects(EventMask::KEY_PRESS | EventMask::BUTTON_PRESS));
|
|
assert!(!mask.intersects(EventMask::ENTER_WINDOW));
|
|
assert!(mask.intersects(EventMask::ENTER_WINDOW | EventMask::BUTTON_PRESS));
|
|
|
|
assert!(mask.intersects(1u32));
|
|
assert!(mask.intersects(4u32));
|
|
assert!(mask.intersects(5u32));
|
|
assert!(!mask.intersects(16u32));
|
|
assert!(mask.intersects(20u32));
|
|
}
|
|
|
|
#[test]
|
|
fn test_remove() {
|
|
let no_event = EventMask::NO_EVENT;
|
|
let key_press = EventMask::KEY_PRESS;
|
|
let button_press = EventMask::BUTTON_PRESS;
|
|
let exposure = EventMask::EXPOSURE;
|
|
let key_and_button_press = key_press | button_press;
|
|
|
|
assert_eq!(no_event, key_press.remove(key_press));
|
|
assert_eq!(key_press, key_press.remove(no_event));
|
|
assert_eq!(key_press, key_press.remove(button_press));
|
|
assert_eq!(key_press, key_and_button_press.remove(button_press));
|
|
assert_eq!(key_press, key_and_button_press.remove(button_press));
|
|
assert_eq!(key_and_button_press, key_and_button_press.remove(exposure));
|
|
|
|
assert_eq!(no_event, key_press.remove(1u32));
|
|
assert_eq!(key_press, key_press.remove(0u32));
|
|
assert_eq!(key_press, key_press.remove(4u32));
|
|
assert_eq!(key_press, key_and_button_press.remove(4u32));
|
|
assert_eq!(
|
|
key_and_button_press,
|
|
key_and_button_press.remove(1u32 << 15)
|
|
);
|
|
}
|