Trait unimock::Clause

source ·
pub trait Clause { }
Expand description

A clause represents a recipe for creating a unimock instance.

Clauses may be terminal (basic) and non-terminal (composite). Terminal clauses are created with unimock’s builder API, non-terminals/composites are created by grouping other clauses in tuples.

use unimock::*;
#[unimock(api=FooMock)]
trait Foo {
    fn foo(&self, i: i32) -> i32;
}

#[unimock(api=BarMock)]
trait Bar {
    fn bar(&self, i: i32) -> i32;
}

#[unimock(api=BazMock)]
trait Baz {
    fn baz(&self, i: i32) -> i32;
}

// A reusable function returning a composite clause from two terminals, by tupling them:
fn setup_foo_and_bar() -> impl Clause {
    (
        FooMock::foo.some_call(matching!(_)).returns(1),
        BarMock::bar.some_call(matching!(_)).returns(2),
    )
}

// Basic and composite clauses may be recombined again to make new tuples:
let mocked = Unimock::new((
    setup_foo_and_bar(),
    BazMock::baz.some_call(matching!(_)).returns(3),
));
assert_eq!(6, mocked.foo(0) + mocked.bar(0) + mocked.baz(0));

Implementations on Foreign Types§

source§

impl Clause for ()

source§

impl<T1: Clause, T2: Clause> Clause for (T1, T2)

source§

impl<T1: Clause, T2: Clause, T3: Clause> Clause for (T1, T2, T3)

source§

impl<T1: Clause, T2: Clause, T3: Clause, T4: Clause> Clause for (T1, T2, T3, T4)

source§

impl<T1: Clause, T2: Clause, T3: Clause, T4: Clause, T5: Clause> Clause for (T1, T2, T3, T4, T5)

source§

impl<T1: Clause, T2: Clause, T3: Clause, T4: Clause, T5: Clause, T6: Clause> Clause for (T1, T2, T3, T4, T5, T6)

source§

impl<T1: Clause, T2: Clause, T3: Clause, T4: Clause, T5: Clause, T6: Clause, T7: Clause> Clause for (T1, T2, T3, T4, T5, T6, T7)

source§

impl<T1: Clause, T2: Clause, T3: Clause, T4: Clause, T5: Clause, T6: Clause, T7: Clause, T8: Clause> Clause for (T1, T2, T3, T4, T5, T6, T7, T8)

source§

impl<T1: Clause, T2: Clause, T3: Clause, T4: Clause, T5: Clause, T6: Clause, T7: Clause, T8: Clause, T9: Clause> Clause for (T1, T2, T3, T4, T5, T6, T7, T8, T9)

source§

impl<T1: Clause, T2: Clause, T3: Clause, T4: Clause, T5: Clause, T6: Clause, T7: Clause, T8: Clause, T9: Clause, T10: Clause> Clause for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

source§

impl<T1: Clause, T2: Clause, T3: Clause, T4: Clause, T5: Clause, T6: Clause, T7: Clause, T8: Clause, T9: Clause, T10: Clause, T11: Clause> Clause for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

source§

impl<T1: Clause, T2: Clause, T3: Clause, T4: Clause, T5: Clause, T6: Clause, T7: Clause, T8: Clause, T9: Clause, T10: Clause, T11: Clause, T12: Clause> Clause for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

source§

impl<T1: Clause, T2: Clause, T3: Clause, T4: Clause, T5: Clause, T6: Clause, T7: Clause, T8: Clause, T9: Clause, T10: Clause, T11: Clause, T12: Clause, T13: Clause> Clause for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)

source§

impl<T1: Clause, T2: Clause, T3: Clause, T4: Clause, T5: Clause, T6: Clause, T7: Clause, T8: Clause, T9: Clause, T10: Clause, T11: Clause, T12: Clause, T13: Clause, T14: Clause> Clause for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)

source§

impl<T1: Clause, T2: Clause, T3: Clause, T4: Clause, T5: Clause, T6: Clause, T7: Clause, T8: Clause, T9: Clause, T10: Clause, T11: Clause, T12: Clause, T13: Clause, T14: Clause, T15: Clause> Clause for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)

source§

impl<T1: Clause, T2: Clause, T3: Clause, T4: Clause, T5: Clause, T6: Clause, T7: Clause, T8: Clause, T9: Clause, T10: Clause, T11: Clause, T12: Clause, T13: Clause, T14: Clause, T15: Clause, T16: Clause> Clause for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)

Implementors§

source§

impl<'p, F, O> Clause for Quantify<'p, F, O>
where F: MockFn, O: Ordering,

source§

impl<'p, F, O, R> Clause for QuantifiedResponse<'p, F, O, R>
where F: MockFn, O: Ordering, R: Repetition,

source§

impl<'p, F, T, O> Clause for QuantifyReturnValue<'p, F, T, O>
where F: MockFn, T: IntoReturnOnce<F::OutputKind>, O: Copy + Ordering, <<F as MockFn>::OutputKind as Kind>::Return: IntoReturner<F>,

source§

impl<F> Clause for Each<F>
where F: MockFn,