murf 0.2.0

A mocking and unit test framework for rust
Documentation
use std::fmt::{Display, Formatter, Result as FmtResult};

use murf::{expect_method_call, matcher::eq, mock};

#[derive(Debug, PartialEq, Eq, Clone, Copy)]
struct Wrapper<'a, T>(&'a T);

impl<'a, T: Display> Display for Wrapper<'a, T> {
    fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult {
        write!(f, "Wrapper({})", &self.0)
    }
}

trait Fuu<T> {
    fn fuu(&self, arg: T);
}

mock! {
    #[derive(Default)]
    pub struct MyStruct;

    impl<T> Fuu<T> for MyStruct {
        fn fuu(&self, _arg: T);
    }
}

#[test]
fn success() {
    let fuu = 123usize;
    let fuu = Wrapper(&fuu);
    let (handle, mock) = MyStruct::mock_with_handle();

    expect_method_call!(handle as Fuu, fuu(eq(fuu)));

    mock.fuu(Wrapper(&123usize));
}