#[cfg(feature = "undocumented")] #[cfg_attr(doc_cfg, doc(cfg(feature = "undocumented")))]
pub fn power_off_controller(user_index: impl TryInto<u32>) -> Result<(), Error> {
fn_context!(xinput::power_off_controller => XInputPowerOffController);
#[allow(non_snake_case)] let XInputPowerOffController = imports::_XInputPowerOffController.load(core::sync::atomic::Ordering::Relaxed);
let user_index = user_index.try_into().map_err(|_| fn_param_error!(user_index, error::BAD_ARGUMENTS))?;
let code = unsafe { XInputPowerOffController(user_index) };
check_success!(code)
}
#[cfg(all(test, feature = "undocumented"))] mod power_off_controller_tests {
use super::*;
#[test] fn valid_params() {
if power_off_controller(128) == error::INVALID_FUNCTION { return }
if let Err(err) = power_off_controller(1) { assert_eq!(err, error::DEVICE_NOT_CONNECTED); }
if let Err(err) = power_off_controller(2) { assert_eq!(err, error::DEVICE_NOT_CONNECTED); }
if let Err(err) = power_off_controller(3) { assert_eq!(err, error::DEVICE_NOT_CONNECTED); }
}
#[test] fn bad_arguments() {
if power_off_controller(128) == error::INVALID_FUNCTION { return }
assert_eq!(error::BAD_ARGUMENTS, power_off_controller(xuser::INDEX_ANY));
for u in xuser::invalids() {
assert_eq!(error::BAD_ARGUMENTS, power_off_controller(u));
}
}
}