diff options
Diffstat (limited to 'src/router/buffer.rs')
-rw-r--r-- | src/router/buffer.rs | 48 |
1 files changed, 28 insertions, 20 deletions
diff --git a/src/router/buffer.rs b/src/router/buffer.rs index 3f348ea..96b16ab 100644 --- a/src/router/buffer.rs +++ b/src/router/buffer.rs @@ -4,20 +4,23 @@ * 2. Inserting into the buffer always succeeds, but might overwrite the oldest item */ -const BUFFER_SIZE : usize = 1024; +const BUFFER_SIZE: usize = 1024; pub struct DiscardingRingBuffer<T> { - buf : [ Option<T> ; BUFFER_SIZE], - idx : usize, - next : usize + buf: [Option<T>; BUFFER_SIZE], + idx: usize, + next: usize, } -impl <T>DiscardingRingBuffer<T> where T: Copy { +impl<T> DiscardingRingBuffer<T> +where + T: Copy, +{ pub fn new() -> Self { - DiscardingRingBuffer{ - buf : [None; BUFFER_SIZE], - idx : 0, - next : 0 + DiscardingRingBuffer { + buf: [None; BUFFER_SIZE], + idx: 0, + next: 0, } } @@ -29,7 +32,7 @@ impl <T>DiscardingRingBuffer<T> where T: Copy { } } - pub fn push(&mut self, val : T) { + pub fn push(&mut self, val: T) { // assign next slot (free / oldest) self.buf[self.idx] = Some(val); self.idx += 1; @@ -57,20 +60,25 @@ impl <T>DiscardingRingBuffer<T> where T: Copy { pub fn has_element(&self) -> bool { match self.buf[self.next] { None => true, - _ => false + _ => false, } } } +#[cfg(test)] +mod tests { + use super::*; + use proptest::prelude::*; -proptest! { - #[test] - fn test_order(elems: Vec<usize>) { - let mut buf = DiscardingRingBuffer<usize>::new(); + proptest! { + #[test] + fn test_order(elems: Vec<usize>) { + let mut buf = DiscardingRingBuffer::new(); - for e in &elems { - buf.push(e); - } + for e in &elems { + buf.push(e); + } - } -}
\ No newline at end of file + } + } +} |