use async_wrr_queue::WrrQueue;
#[cfg(feature = "blocking")]
fn main() {
let mut queue = WrrQueue::new();
queue.insert_many(vec![("a", 1usize), ("b", 2usize)]);
queue.insert(("c", 3usize));
queue.insert_many(vec![("d", 5usize), ("e", 2usize)]);
let mut expected = [
"d", "c", "b", "d", "e", "d", "c", "a", "d", "b", "e", "c", "d",
]
.iter()
.cycle();
for _ in 0..30 {
let select = queue.select();
assert_eq!(expected.next().unwrap(), select.unwrap().data(),);
}
}
#[cfg(feature = "tokio")]
#[tokio::main]
async fn main() {
let mut queue = WrrQueue::new();
queue.insert_many(vec![("a", 1usize), ("b", 2usize)]).await;
queue.insert(("c", 3usize)).await;
queue.insert_many(vec![("d", 5usize), ("e", 2usize)]).await;
let mut expected = [
"d", "c", "b", "d", "e", "d", "c", "a", "d", "b", "e", "c", "d",
]
.iter()
.cycle();
for _ in 0..30 {
let select = queue.select().await;
assert_eq!(expected.next().unwrap(), select.unwrap().data(),);
}
}