use nodedb_bridge::{BridgeChannel, ControlHandle, DataHandle};
const _: () = {
fn _assert_send<T: Send>() {}
fn _control_is_send() {
_assert_send::<ControlHandle<u64, u64>>();
}
fn _data_is_send() {
_assert_send::<DataHandle<u64, u64>>();
}
};
#[test]
fn pin_workflow_roundtrip() {
let bridge: BridgeChannel<u64, u64> = BridgeChannel::new(16, 16).unwrap();
let mut control = bridge.control;
let data = bridge.data;
let mut pinned = data.pin();
control.try_send_request(42).unwrap();
let req = pinned.try_recv_request().unwrap();
assert_eq!(req, 42);
pinned.try_send_response(84).unwrap();
let rsp = control.try_recv_response().unwrap();
assert_eq!(rsp, 84);
}
#[test]
fn pin_throttle_queries_work() {
let bridge: BridgeChannel<u64, u64> = BridgeChannel::new(16, 16).unwrap();
let mut control = bridge.control;
let pinned = bridge.data.pin();
assert!(!pinned.should_throttle());
for i in 0..14 {
control.try_send_request(i).unwrap();
}
assert!(pinned.should_throttle());
}