use crate::ops::workgroup::queue_fifo::{FifoError, WorkgroupQueueFifo};
#[test]
pub fn preserves_total_enqueue_order() {
let mut queue: WorkgroupQueueFifo<u32> = WorkgroupQueueFifo::new(3);
assert!(queue.enqueue(1_u32).is_ok());
assert!(queue.enqueue(2).is_ok());
assert_eq!(queue.dequeue(), Ok(1));
assert_eq!(queue.dequeue(), Ok(2));
}
#[test]
pub fn overflow_does_not_drop_head() {
let mut queue: WorkgroupQueueFifo<u32> = WorkgroupQueueFifo::new(1);
assert!(queue.enqueue(9_u32).is_ok());
assert_eq!(queue.enqueue(10), Err(FifoError::Overflow));
assert_eq!(queue.dequeue(), Ok(9));
}
#[test]
pub fn wgsl_kernel_source_exposes_the_expected_entry_point() {
let wgsl = crate::ops::workgroup::queue_fifo::lowering::WGSL;
let entry = crate::ops::workgroup::queue_fifo::lowering::ENTRY_POINT;
assert!(wgsl.contains(entry), "WGSL missing entry point {entry}");
assert!(crate::ops::workgroup::queue_fifo::lowering::exposes_registered_entry_point());
}