libs/kaptan-tx: cover critical frame admission

This commit is contained in:
Onur Özkan committed 2026-07-26 18:03:46 +03:00
1 parent b985874240
commit cb447bc057
1 file changed
+55
+55
View File
@@ -176,6 +176,61 @@ mod tests {
assert_eq!(queue.complete().unwrap().frame, 1); assert_eq!(queue.complete().unwrap().frame, 1);
} }
#[test]
fn critical_frame_displaces_pending_best_effort_traffic() {
let mut queue = TransmitQueue::<u8, 2>::new();
queue.enqueue(PendingFrame {
class: FrameClass::BestEffort,
frame: 1,
});
queue.start_with(|_| Ok::<_, ()>(())).unwrap();
queue.enqueue(PendingFrame {
class: FrameClass::BestEffort,
frame: 2,
});
queue.enqueue(PendingFrame {
class: FrameClass::BestEffort,
frame: 3,
});
assert_eq!(
queue.enqueue(PendingFrame {
class: FrameClass::Critical,
frame: 4,
}),
EnqueueResult::ReplacedBestEffort
);
queue.complete();
assert_eq!(
queue.start_with(|frame| {
assert_eq!(*frame, 4);
Ok::<_, ()>(())
}),
Ok(StartOutcome::Started)
);
}
#[test]
fn critical_admission_reports_when_only_critical_frames_are_pending() {
let mut queue = TransmitQueue::<u8, 2>::new();
queue.enqueue(PendingFrame {
class: FrameClass::Critical,
frame: 1,
});
queue.enqueue(PendingFrame {
class: FrameClass::Critical,
frame: 2,
});
assert_eq!(
queue.enqueue(PendingFrame {
class: FrameClass::Critical,
frame: 3,
}),
EnqueueResult::CriticalQueueFull
);
}
#[test] #[test]
fn rejects_start_without_claiming_active_ownership() { fn rejects_start_without_claiming_active_ownership() {
let mut queue = TransmitQueue::<u8, 1>::new(); let mut queue = TransmitQueue::<u8, 1>::new();