summaryrefslogtreecommitdiffstats
path: root/src/router/buffer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/router/buffer.rs')
-rw-r--r--src/router/buffer.rs48
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
+ }
+ }
+}