From 1f188b56280e71adfaccaf67dd55cd89f593a067 Mon Sep 17 00:00:00 2001
From: Nikolay Kim <fafhrd91@gmail.com>
Date: Tue, 13 Sep 2016 15:30:44 -0700
Subject: [PATCH] fix dropping front block in BlockBuf

---
 src/buf/block.rs   |  2 +-
 test/test.rs       |  1 +
 test/test_block.rs | 22 ++++++++++++++++++++++
 3 files changed, 24 insertions(+), 1 deletion(-)
 create mode 100644 test/test_block.rs

diff --git a/src/buf/block.rs b/src/buf/block.rs
index 086c90e..988318b 100644
--- a/src/buf/block.rs
+++ b/src/buf/block.rs
@@ -175,7 +175,7 @@ impl BlockBuf {
 
                 block.drop(segment_n);
 
-                !MutBuf::has_remaining(block)
+                block.len() == 0
             };
 
             if pop {
diff --git a/test/test.rs b/test/test.rs
index f4edae2..5158856 100644
--- a/test/test.rs
+++ b/test/test.rs
@@ -6,6 +6,7 @@ extern crate byteorder;
 
 // == Buf
 mod test_append;
+mod test_block;
 mod test_buf;
 mod test_buf_fill;
 mod test_byte_buf;
diff --git a/test/test_block.rs b/test/test_block.rs
new file mode 100644
index 0000000..37a9334
--- /dev/null
+++ b/test/test_block.rs
@@ -0,0 +1,22 @@
+use bytes::{MutBuf, BlockBuf};
+
+
+#[test]
+pub fn test_block_drop() {
+    let mut buf = BlockBuf::new(2, 4);
+
+    assert_eq!(buf.remaining(), 8);
+
+    buf.write_slice(b"12345");
+    buf.write_slice(b"678");
+    assert_eq!(buf.remaining(), 0);
+    assert_eq!(buf.len(), 8);
+
+    buf.drop(1);
+    assert_eq!(buf.len(), 7);
+    assert_eq!(buf.is_compact(), false);
+
+    buf.drop(4);
+    assert_eq!(buf.len(), 3);
+    assert_eq!(buf.is_compact(), true);
+}
-- 
GitLab