From 40f1d1aa77f0fce11da943b67b408e29f05eb893 Mon Sep 17 00:00:00 2001
From: Florian Hartwig <florian.j.hartwig@gmail.com>
Date: Thu, 9 Apr 2015 23:18:16 +0200
Subject: [PATCH] Add some basic tests for RingBuf

---
 test/test.rs      |  1 +
 test/test_ring.rs | 66 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 67 insertions(+)
 create mode 100644 test/test_ring.rs

diff --git a/test/test.rs b/test/test.rs
index 94dce0b..283685f 100644
--- a/test/test.rs
+++ b/test/test.rs
@@ -7,6 +7,7 @@ mod test_buf;
 mod test_buf_fill;
 mod test_byte_buf;
 mod test_bytes;
+mod test_ring;
 mod test_rope;
 mod test_seq_byte_str;
 mod test_small_byte_str;
diff --git a/test/test_ring.rs b/test/test_ring.rs
new file mode 100644
index 0000000..e740d23
--- /dev/null
+++ b/test/test_ring.rs
@@ -0,0 +1,66 @@
+use bytes::RingBuf;
+
+
+#[test]
+pub fn test_initial_buf_empty() {
+    use bytes::traits::{Buf, BufExt, MutBuf, MutBufExt};
+
+    let mut buf = RingBuf::new(16);
+    assert_eq!(MutBuf::remaining(&buf), 16);
+    assert_eq!(Buf::remaining(&buf), 0);
+
+    let bytes_written = buf.write(&[1, 2, 3][..]).unwrap();
+    assert_eq!(bytes_written, 3);
+
+    let bytes_written = buf.write(&[][..]).unwrap();
+    assert_eq!(bytes_written, 0);
+    assert_eq!(MutBuf::remaining(&buf), 13);
+    assert_eq!(Buf::remaining(&buf), 3);
+    assert_eq!(buf.bytes(), [1, 2, 3]);
+
+    let mut out = [0u8; 3];
+    let bytes_read = buf.read(&mut out[..]).unwrap();;
+    assert_eq!(bytes_read, 3);
+    assert_eq!(out, [1, 2, 3]);
+    assert_eq!(MutBuf::remaining(&buf), 16);
+    assert_eq!(Buf::remaining(&buf), 0);
+}
+
+#[test]
+fn test_wrapping_write() {
+    use bytes::traits::{BufExt, MutBufExt};
+    let mut buf = RingBuf::new(16);
+    let mut out = [0;10];
+
+    buf.write(&[42;12][..]).unwrap();
+    let bytes_read = buf.read(&mut out[..]).unwrap();
+    assert_eq!(bytes_read, 10);
+
+    let bytes_written = buf.write(&[23;8][..]).unwrap();
+    assert_eq!(bytes_written, 8);
+
+    let bytes_read = buf.read(&mut out[..]).unwrap();
+    assert_eq!(bytes_read, 10);
+    assert_eq!(out, [42, 42, 23, 23, 23, 23, 23, 23, 23, 23]);
+}
+
+#[test]
+fn test_io_write_and_read() {
+    use std::io::{Read, Write};
+
+    let mut buf = RingBuf::new(16);
+    let mut out = [0;8];
+
+    let written = buf.write(&[1;8][..]).unwrap();
+    assert_eq!(written, 8);
+
+    buf.read(&mut out).unwrap();
+    assert_eq!(out, [1;8]);
+
+    let written = buf.write(&[2;8][..]).unwrap();
+    assert_eq!(written, 8);
+
+    let bytes_read = buf.read(&mut out).unwrap();
+    assert_eq!(bytes_read, 8);
+    assert_eq!(out, [2;8]);
+}
-- 
GitLab