use std::ptr;
use std::task::{RawWaker, RawWakerVTable, Waker};

#[test]
fn test_waker_getters() {
    let raw_waker = RawWaker::new(ptr::invalid_mut(42usize), &WAKER_VTABLE);
    assert_eq!(raw_waker.data() as usize, 42);
    assert!(ptr::eq(raw_waker.vtable(), &WAKER_VTABLE));

    let waker = unsafe { Waker::from_raw(raw_waker) };
    let waker2 = waker.clone();
    let raw_waker2 = waker2.as_raw();
    assert_eq!(raw_waker2.data() as usize, 43);
    assert!(ptr::eq(raw_waker2.vtable(), &WAKER_VTABLE));
}

static WAKER_VTABLE: RawWakerVTable = RawWakerVTable::new(
    |data| RawWaker::new(ptr::invalid_mut(data as usize + 1), &WAKER_VTABLE),
    |_| {},
    |_| {},
    |_| {},
);
