in src/session/buffer.rs [277:309]
fn consume_3() {
let mut buffer = Buffer::with_capacity(8);
assert_eq!(buffer.len(), 0);
assert_eq!(buffer.available_capacity(), 8);
assert!(buffer.is_empty());
let content = b"END\r\n";
let len = content.len();
buffer.extend_from_slice(content);
assert_eq!(buffer.len(), len);
assert_eq!(buffer.available_capacity(), 3);
assert!(!buffer.is_empty());
// consume all but the last byte of content in the buffer, one byte at
// a time
// - buffer len decreases with each call to consume()
// - buffer available capacity increases with each call to consume()
for i in 1..len {
buffer.consume(1);
assert_eq!(buffer.len(), len - i);
assert_eq!(buffer.available_capacity(), 3 + i);
assert!(!buffer.is_empty());
}
// when consuming the final byte, the read/write offsets move to the
// start of the buffer, and available capacity should be the original
// buffer size
buffer.consume(1);
assert_eq!(buffer.len(), 0);
assert_eq!(buffer.available_capacity(), 8);
assert!(buffer.is_empty());
}