mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-16 00:00:12 +02:00
This change adds an extension trait to `BufStream` and puts the core trait behind a feature flag for optional use. This mainly adds the additional functions in an extension trait to allow the user to select if they want just the core trait or the fully featured version. Now the user can add the core feature to _not_ include the extension trait. By deafult, this feature is disabled.
68 lines
1.4 KiB
Rust
68 lines
1.4 KiB
Rust
extern crate tokio_buf;
|
|
extern crate bytes;
|
|
extern crate futures;
|
|
|
|
use tokio_buf::{BufStream, SizeHint};
|
|
use bytes::Buf;
|
|
use futures::Async::*;
|
|
|
|
|
|
#[macro_use]
|
|
mod support;
|
|
|
|
// ===== test `SizeHint` =====
|
|
|
|
#[test]
|
|
fn size_hint() {
|
|
let hint = SizeHint::new();
|
|
assert_eq!(hint.lower(), 0);
|
|
assert!(hint.upper().is_none());
|
|
|
|
let mut hint = SizeHint::new();
|
|
hint.set_lower(100);
|
|
assert_eq!(hint.lower(), 100);
|
|
assert!(hint.upper().is_none());
|
|
|
|
let mut hint = SizeHint::new();
|
|
hint.set_upper(200);
|
|
assert_eq!(hint.lower(), 0);
|
|
assert_eq!(hint.upper(), Some(200));
|
|
|
|
let mut hint = SizeHint::new();
|
|
hint.set_lower(100);
|
|
hint.set_upper(100);
|
|
assert_eq!(hint.lower(), 100);
|
|
assert_eq!(hint.upper(), Some(100));
|
|
}
|
|
|
|
#[test]
|
|
#[should_panic]
|
|
fn size_hint_lower_bigger_than_upper() {
|
|
let mut hint = SizeHint::new();
|
|
hint.set_upper(100);
|
|
hint.set_lower(200);
|
|
}
|
|
|
|
#[test]
|
|
#[should_panic]
|
|
fn size_hint_upper_less_than_lower() {
|
|
let mut hint = SizeHint::new();
|
|
hint.set_lower(200);
|
|
hint.set_upper(100);
|
|
}
|
|
|
|
// ===== BufStream impelmentations for misc types =====
|
|
|
|
#[test]
|
|
fn str_buf_stream() {
|
|
let mut bs = "hello world".to_string();
|
|
assert_buf_eq!(bs.poll_buf(), "hello world");
|
|
assert!(bs.is_empty());
|
|
assert_none!(bs.poll_buf());
|
|
|
|
let mut bs = "hello world";
|
|
assert_buf_eq!(bs.poll_buf(), "hello world");
|
|
assert!(bs.is_empty());
|
|
assert_none!(bs.poll_buf());
|
|
}
|