mock_derive 0.8.0

An easy to setup, rich mocking library for the Rust programming language.
Documentation
extern crate mock_derive;

use mock_derive::mock;

#[mock]
trait GenericTrait<T, U>
      where T: Clone {
      fn merge(&self, t: T, u: U) -> U;
}

#[mock]
trait LifetimeTrait<'a, T>
    where T: 'a {
    fn return_value(&self, t: T) -> &'a T;
}

#[cfg(test)]
mod test {
    use super::*;

    #[test]
    fn generic_test_one() {
        let mut mock = MockGenericTrait::<f32, i32>::new();
        let method = mock.method_merge()
            .called_once()
            .set_result(30);

        mock.set_merge(method);
        assert!(mock.merge(15.0, 15) == 30);
    }


    static TEST_FLOAT: f32 = 1.0;

    #[test]
    fn generics_and_lifetime() {
        let mut mock = MockLifetimeTrait::<'static, f32>::new();
        let method = mock.method_return_value()
            .called_once()
            .set_result(&TEST_FLOAT);

        mock.set_return_value(method);
        assert!(mock.return_value(TEST_FLOAT.clone()) == &TEST_FLOAT);
    }
}