#io-stream #mocking #io #mock-stream

mock-io

一个具有模拟IO流和监听器实现的crate

7个版本

0.3.2 2021年6月23日
0.3.1 2021年5月13日
0.3.0 2021年1月27日
0.2.1 2020年10月20日
0.1.1 2020年10月20日

#313测试 类别

Download history 24/week @ 2024-03-11 33/week @ 2024-03-18 17/week @ 2024-03-25 25/week @ 2024-04-01 17/week @ 2024-04-08 38/week @ 2024-04-15 14/week @ 2024-04-22 48/week @ 2024-04-29 98/week @ 2024-05-06 57/week @ 2024-05-13 76/week @ 2024-05-20 23/week @ 2024-05-27 1/week @ 2024-06-10 42/week @ 2024-06-17 50/week @ 2024-06-24

每月 93 次下载
用于 2 个crate

MIT/Apache

31KB
713

mock-io

CI Crates.io Documentation License

一个具有模拟IO流和监听器实现的crate。

用法

在您的 Cargo.toml 文件的 dependencies 部分添加 mock-io

[dependencies]
mock-io = "0.3"

以下是此crate的示例用法

use mock_io::sync::{MockListener, MockStream};

let (listener, handle) = MockListener::new();

thread::spawn(move || {
    let mut stream = MockStream::connect(&handle).unwrap();
    stream.write(&1u64.to_be_bytes()).unwrap();
    stream.write(&2u64.to_be_bytes()).unwrap();
});

while let Ok(mut stream) = listener.accept() {
    let mut buf = [0; 8];

    stream.read(&mut buf).unwrap();
    assert_eq!(1u64.to_be_bytes(), buf);
    
    stream.read(&mut buf).unwrap();
    assert_eq!(2u64.to_be_bytes(), buf);
}

功能

  • sync: 启用同步模拟IO流和监听器
    • 默认启用
  • async-futures: 启用异步模拟IO流和监听器(使用 futures::io::{AsyncRead, AsyncWrite}
    • 默认禁用
  • async-tokio: 启用异步模拟IO流和监听器(使用 tokio::io::{AsyncRead, AsyncWrite}
    • 默认禁用

注意:此crate中的一些函数返回 Future。因此,您需要使用执行器来驱动这些函数返回的 Futureasync-stdtokio 是两种流行的选择。

许可证

以下任一许可证下使用

任选其一。

贡献

除非您明确声明,否则任何有意提交以包含在作品中的贡献,根据Apache-2.0许可证的定义,应按上述方式双重许可,不附加任何额外条款或条件。

依赖项

~0.3–2MB
~39K SLoC