Struct mockstream::FailingMockStream [] [src]

pub struct FailingMockStream { /* fields omitted */ }

FailingMockStream mocks a stream which will fail upon read or write

Examples

use std::io::{Cursor, Read};

struct CountIo {}

impl CountIo {
    fn read_data(&self, r: &mut Read) -> usize {
        let mut count: usize = 0;
        let mut retries = 3;

        loop {
            let mut buffer = [0; 5];
            match r.read(&mut buffer) {
                Err(_) => {
                    if retries == 0 { break; }
                    retries -= 1;
                },
                Ok(0) => break,
                Ok(n) => count += n,
            }
        }
        count
    }
}

#[test]
fn test_io_retries() {
    let mut c = Cursor::new(&b"1234"[..])
            .chain(FailingMockStream::new(ErrorKind::Other, "Failing", 3))
            .chain(Cursor::new(&b"5678"[..]));

    let sut = CountIo {};
    // this will fail unless read_data performs at least 3 retries on I/O errors
    assert_eq!(8, sut.read_data(&mut c));
}

Methods

impl FailingMockStream
[src]

[src]

Creates a FailingMockStream

When read or write is called, it will return an error repeat_count times. kind and message can be specified to define the exact error.

Trait Implementations

impl Clone for FailingMockStream
[src]

[src]

Returns a copy of the value. Read more

1.0.0
[src]

Performs copy-assignment from source. Read more

impl Read for FailingMockStream
[src]

[src]

Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more

[src]

🔬 This is a nightly-only experimental API. (read_initializer)

Determines if this Reader can work with buffers of uninitialized memory. Read more

1.0.0
[src]

Read all bytes until EOF in this source, placing them into buf. Read more

1.0.0
[src]

Read all bytes until EOF in this source, placing them into buf. Read more

1.6.0
[src]

Read the exact number of bytes required to fill buf. Read more

1.0.0
[src]

Creates a "by reference" adaptor for this instance of Read. Read more

1.0.0
[src]

Transforms this Read instance to an [Iterator] over its bytes. Read more

[src]

🔬 This is a nightly-only experimental API. (io)

the semantics of a partial read/write of where errors happen is currently unclear and may change

Transforms this Read instance to an [Iterator] over [char]s. Read more

1.0.0
[src]

Creates an adaptor which will chain this stream with another. Read more

1.0.0
[src]

Creates an adaptor which will read at most limit bytes from it. Read more

impl Write for FailingMockStream
[src]

[src]

Write a buffer into this object, returning how many bytes were written. Read more

[src]

Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more

1.0.0
[src]

Attempts to write an entire buffer into this write. Read more

1.0.0
[src]

Writes a formatted string into this writer, returning any error encountered. Read more

1.0.0
[src]

Creates a "by reference" adaptor for this instance of Write. Read more