#[cfg(feature = "async")]
mod async_stream_tests {
use iohidmanager::async_api::{
DeviceInputValueStream, DeviceRemovalStream, ManagerDeviceMatchingStream,
ManagerDeviceRemovalStream, ManagerInputReportStream, ManagerInputValueStream,
QueueValueStream,
};
use iohidmanager::prelude::*;
#[test]
fn manager_input_value_stream_subscribe_drop_closes() {
let manager = HidManager::new().expect("manager");
manager.set_device_matching(None).expect("matching");
let stream = ManagerInputValueStream::subscribe(&manager, 8);
assert!(!stream.is_closed(), "stream open before drop");
drop(stream);
}
#[test]
fn manager_device_matching_stream_subscribe_drop_closes() {
let manager = HidManager::new().expect("manager");
manager.set_device_matching(None).expect("matching");
let stream = ManagerDeviceMatchingStream::subscribe(&manager, 64);
std::thread::sleep(std::time::Duration::from_millis(20));
assert!(!stream.is_closed());
drop(stream);
}
#[test]
fn manager_device_removal_stream_subscribe_drop_closes() {
let manager = HidManager::new().expect("manager");
manager.set_device_matching(None).expect("matching");
let stream = ManagerDeviceRemovalStream::subscribe(&manager, 8);
assert_eq!(stream.buffered_count(), 0);
assert!(!stream.is_closed());
drop(stream);
}
#[test]
fn manager_input_report_stream_subscribe_drop_closes() {
let manager = HidManager::new().expect("manager");
manager.set_device_matching(None).expect("matching");
let stream = ManagerInputReportStream::subscribe(&manager, 8);
assert_eq!(stream.buffered_count(), 0);
assert!(!stream.is_closed());
drop(stream);
}
#[test]
fn device_removal_stream_subscribe_drop_closes() {
let manager = HidManager::new().expect("manager");
manager.set_device_matching(None).expect("matching");
let devices = manager.live_devices();
let Some(device) = devices.first() else {
return;
};
let stream = DeviceRemovalStream::subscribe(device, 4);
assert!(!stream.is_closed());
drop(stream);
}
#[test]
fn device_input_value_stream_subscribe_drop_closes() {
let manager = HidManager::new().expect("manager");
manager.set_device_matching(None).expect("matching");
let devices = manager.live_devices();
let Some(device) = devices.first() else {
return;
};
let stream = DeviceInputValueStream::subscribe(device, 64);
assert_eq!(stream.buffered_count(), 0);
assert!(!stream.is_closed());
drop(stream);
}
#[test]
fn queue_value_stream_subscribe_drop_closes() {
let manager = HidManager::new().expect("manager");
manager.set_device_matching(None).expect("matching");
let devices = manager.live_devices();
let Some(device) = devices.first() else {
return;
};
let elements = device.elements();
let Some(element) = elements.first() else {
return;
};
let queue = HidQueue::new(device, 8).expect("queue");
queue.add_element(element);
queue.start();
let stream = QueueValueStream::subscribe(&queue, 16);
assert_eq!(stream.buffered_count(), 0);
assert!(!stream.is_closed());
drop(stream);
queue.stop();
}
#[test]
fn manager_input_value_stream_capacity_one() {
let manager = HidManager::new().expect("manager");
manager.set_device_matching(None).expect("matching");
let stream = ManagerInputValueStream::subscribe(&manager, 1);
assert_eq!(stream.buffered_count(), 0);
drop(stream);
}
}