Add test for priority queue (it seems to work as intended)
Some checks reported errors
continuous-integration/drone/push Build was killed
Some checks reported errors
continuous-integration/drone/push Build was killed
This commit is contained in:
parent
de981aace0
commit
e9add586a5
2 changed files with 96 additions and 0 deletions
2
Makefile
2
Makefile
|
@ -5,3 +5,5 @@ all:
|
||||||
RUST_LOG=netapp=trace,fullmesh=trace cargo run --example fullmesh -- -n 3242ce79e05e8b6a0e43441fbd140a906e13f335f298ae3a52f29784abbab500 -p 6c304114a0e1018bbe60502a34d33f4f439f370856c3333dda2726da01eb93a4894b7ef7249a71f11d342b69702f1beb7c93ec95fbcf122ad1eca583bb0629e7
|
RUST_LOG=netapp=trace,fullmesh=trace cargo run --example fullmesh -- -n 3242ce79e05e8b6a0e43441fbd140a906e13f335f298ae3a52f29784abbab500 -p 6c304114a0e1018bbe60502a34d33f4f439f370856c3333dda2726da01eb93a4894b7ef7249a71f11d342b69702f1beb7c93ec95fbcf122ad1eca583bb0629e7
|
||||||
#RUST_LOG=netapp=debug,fullmesh=debug cargo run --example fullmesh
|
#RUST_LOG=netapp=debug,fullmesh=debug cargo run --example fullmesh
|
||||||
|
|
||||||
|
test:
|
||||||
|
cargo test --all-features -- --test-threads 1
|
||||||
|
|
94
src/proto.rs
94
src/proto.rs
|
@ -204,3 +204,97 @@ pub(crate) trait RecvLoop: Sync + 'static {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_priority_queue() {
|
||||||
|
let i1 = SendQueueItem {
|
||||||
|
id: 1,
|
||||||
|
prio: PRIO_NORMAL,
|
||||||
|
data: vec![],
|
||||||
|
cursor: 0,
|
||||||
|
};
|
||||||
|
let i2 = SendQueueItem {
|
||||||
|
id: 2,
|
||||||
|
prio: PRIO_HIGH,
|
||||||
|
data: vec![],
|
||||||
|
cursor: 0,
|
||||||
|
};
|
||||||
|
let i2bis = SendQueueItem {
|
||||||
|
id: 20,
|
||||||
|
prio: PRIO_HIGH,
|
||||||
|
data: vec![],
|
||||||
|
cursor: 0,
|
||||||
|
};
|
||||||
|
let i3 = SendQueueItem {
|
||||||
|
id: 3,
|
||||||
|
prio: PRIO_HIGH | PRIO_SECONDARY,
|
||||||
|
data: vec![],
|
||||||
|
cursor: 0,
|
||||||
|
};
|
||||||
|
let i4 = SendQueueItem {
|
||||||
|
id: 4,
|
||||||
|
prio: PRIO_BACKGROUND | PRIO_SECONDARY,
|
||||||
|
data: vec![],
|
||||||
|
cursor: 0,
|
||||||
|
};
|
||||||
|
let i5 = SendQueueItem {
|
||||||
|
id: 5,
|
||||||
|
prio: PRIO_BACKGROUND | PRIO_PRIMARY,
|
||||||
|
data: vec![],
|
||||||
|
cursor: 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
let mut q = SendQueue::new();
|
||||||
|
|
||||||
|
q.push(i1); // 1
|
||||||
|
let a = q.pop().unwrap(); // empty -> 1
|
||||||
|
assert_eq!(a.id, 1);
|
||||||
|
assert!(q.pop().is_none());
|
||||||
|
|
||||||
|
q.push(a); // 1
|
||||||
|
q.push(i2); // 2 1
|
||||||
|
q.push(i2bis); // [2 20] 1
|
||||||
|
let a = q.pop().unwrap(); // 20 1 -> 2
|
||||||
|
assert_eq!(a.id, 2);
|
||||||
|
let b = q.pop().unwrap(); // 1 -> 20
|
||||||
|
assert_eq!(b.id, 20);
|
||||||
|
let c = q.pop().unwrap(); // empty -> 1
|
||||||
|
assert_eq!(c.id, 1);
|
||||||
|
assert!(q.pop().is_none());
|
||||||
|
|
||||||
|
q.push(a); // 2
|
||||||
|
q.push(b); // [2 20]
|
||||||
|
q.push(c); // [2 20] 1
|
||||||
|
q.push(i3); // [2 20] 3 1
|
||||||
|
q.push(i4); // [2 20] 3 1 4
|
||||||
|
q.push(i5); // [2 20] 3 1 5 4
|
||||||
|
|
||||||
|
let a = q.pop().unwrap(); // 20 3 1 5 4 -> 2
|
||||||
|
assert_eq!(a.id, 2);
|
||||||
|
q.push(a); // [20 2] 3 1 5 4
|
||||||
|
|
||||||
|
let a = q.pop().unwrap(); // 2 3 1 5 4 -> 20
|
||||||
|
assert_eq!(a.id, 20);
|
||||||
|
let b = q.pop().unwrap(); // 3 1 5 4 -> 2
|
||||||
|
assert_eq!(b.id, 2);
|
||||||
|
q.push(b); // 2 3 1 5 4
|
||||||
|
let b = q.pop().unwrap(); // 3 1 5 4 -> 2
|
||||||
|
assert_eq!(b.id, 2);
|
||||||
|
let c = q.pop().unwrap(); // 1 5 4 -> 3
|
||||||
|
assert_eq!(c.id, 3);
|
||||||
|
q.push(b); // 2 1 5 4
|
||||||
|
let b = q.pop().unwrap(); // 1 5 4 -> 2
|
||||||
|
assert_eq!(b.id, 2);
|
||||||
|
let e = q.pop().unwrap(); // 5 4 -> 1
|
||||||
|
assert_eq!(e.id, 1);
|
||||||
|
let f = q.pop().unwrap(); // 4 -> 5
|
||||||
|
assert_eq!(f.id, 5);
|
||||||
|
let g = q.pop().unwrap(); // empty -> 4
|
||||||
|
assert_eq!(g.id, 4);
|
||||||
|
assert!(q.pop().is_none());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue