2 个版本
使用旧的 Rust 2015
0.1.1 | 2018年9月2日 |
---|---|
0.1.0 | 2018年8月30日 |
#47 in #fake
用于 http-codec
5KB
63 代码行,不包括注释
fake-stream
这是一个用于测试的伪造流。
它从同一个缓冲区写入和读取。
示例
extern crate fake_stream;
use fake_stream::FakeStream;
fn main() {
let mut fake = FakeStream::new();
let wl = fake.write(b"something").unwrap();
assert_eq!(9, wl);
let mut buf = [0; 5];
let rl = fake.read(&mut buf).unwrap();
assert_eq!(5, rl);
assert_eq!(buf, *b"somet");
let mut buf = *b" ";
let rl = fake.read(&mut buf).unwrap();
assert_eq!(4, rl);
assert_eq!(buf, *b"hing ");
}
tokio-codec 示例
fn main() {
let mut fake = FakeStream::new();
let res = b"\
HTTP/1.1 200 OK\r\n\
Date: Mon, 27 Jul 2009 12:28:53 GMT\r\n\
Server: Apache/2.2.14 (Win32)\r\n\
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT\r\n\
Content-Length: 9\r\n\
Content-Type: text/html\r\n\r\n\
something";
let wl = fake.write(res).unwrap();
assert_eq!(res.len(), wl);
let mut framed = HttpCodec::new().framed(fake);
let response = match framed.poll().unwrap() {
Async::Ready(Some(response)) => response,
_ => panic!("no response"),
};
assert_eq!(response.status().as_u16(), 200);
assert_eq!(response.headers().len(), 5);
assert_eq!(response.body(), &Bytes::from_static(b"something"));
}
依赖项
~610KB
~11K SLoC