mock-io

Crates.iomock-io
lib.rsmock-io
version0.3.2
sourcesrc
created_at2020-10-20 04:28:20.246019
updated_at2021-06-23 02:16:31.521344
descriptionA crate with mock IO stream and listener implementations
homepagehttps://github.com/devashishdxt/mock-io
repositoryhttps://github.com/devashishdxt/mock-io
max_upload_size
id303310
size30,823
Devashish Dixit (devashishdxt)

documentation

README

mock-io

CI Crates.io Documentation License

A crate with mock IO stream and listener implementations.

Usage

Add mock-io in your Cargo.toml's dependencies section:

[dependencies]
mock-io = "0.3"

Here is a sample usage of this 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);
}

Features

  • sync: Enables sync mock IO stream and listener
    • Enabled by default
  • async-futures: Enables async mock IO stream and listener (using futures::io::{AsyncRead, AsyncWrite})
    • Disabled by default
  • async-tokio: Enables async mock IO stream and listener (using tokio::io::{AsyncRead, AsyncWrite})
    • Disabled by default

Note: Some functions in this crate returns a Future. So, you'll need an executor to drive Futures returned from these functions. async-std and tokio are two popular options.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Commit count: 29

cargo fmt