1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use crate::*;
use crate::xinput::*;
use bytemuck::Zeroable;
use winapi::um::xinput::*;
pub fn get_state(user_index: impl Into<User>) -> Result<State, MethodError> {
let mut state = State::zeroed();
let code = unsafe { XInputGetState(user_index.into().into(), &mut state as *mut _ as *mut _) };
check_error_success("XInputGetState", code)?;
Ok(state)
}
#[test] fn test_valid_params() {
if let Err(err) = get_state(User::Zero ) { assert_eq!(err.kind(), ERROR::DEVICE_NOT_CONNECTED); }
if let Err(err) = get_state(User::Three) { assert_eq!(err.kind(), ERROR::DEVICE_NOT_CONNECTED); }
}
#[test] fn test_bad_arguments() {
assert_eq!(ERROR::BAD_ARGUMENTS, get_state(User::Any));
assert_eq!(ERROR::BAD_ARGUMENTS, get_state(User::from_unchecked(4)));
assert_eq!(ERROR::BAD_ARGUMENTS, get_state(User::from_unchecked(254)));
}