@@ -105,25 +105,18 @@ fn parameter_type_test() {
105
105
. first_call ()
106
106
. set_result (Some (11 ))
107
107
. nth_call (2 ) // equiv to 'second_call'
108
- . set_result (None );
108
+ . set_result (None )
109
+ . nth_call (3 )
110
+ . set_result (None )
111
+ . nth_call (4 )
112
+ . set_result (Some (1 ));
109
113
110
114
mock . set_bar (method );
111
-
112
- let result = mock . bar ();
113
- assert! (result == Some (11 ));
115
+
116
+ assert! (mock . bar () == Some (11 ));
114
117
assert! (mock . bar () == None );
115
- }
116
-
117
- #[test]
118
- fn parameter_gen_test () {
119
- let mut mock = MockHelloWorld :: new ();
120
- let method = mock . method_baz ()
121
- . first_call ()
122
- . set_result (Foo :: new ());
123
-
124
- mock . set_baz (method );
125
- let result = mock . baz (32 );
126
- assert! (result . x == 0 && result . y == 0 );
118
+ assert! (mock . bar () == None );
119
+ assert! (mock . bar () == Some (1 ));
127
120
}
128
121
129
122
// You can also pass in a lambda to return a value. This can be used to return a value
@@ -180,6 +173,49 @@ fn called_once_failure_too_little() {
180
173
// Foo is never called, this will panic on completion.
181
174
}
182
175
176
+ ```
177
+
178
+ ## GENERICS
179
+
180
+ As of mock_derive 0.5.0, we have (basic) support for generics. Check out tests/src/generics.rs for more examples.
181
+ ``` rust
182
+ #[mock]
183
+ trait GenericTrait <T , U >
184
+ where T : Clone {
185
+ fn merge (& self , t : T , u : U ) -> U ;
186
+ }
187
+
188
+ #[test]
189
+ fn generic_test_one () {
190
+ let mut mock = MockGenericTrait :: <f32 , i32 >:: new ();
191
+ let method = mock . method_merge ()
192
+ . called_once ()
193
+ . set_result (30 );
194
+
195
+ mock . set_merge (method );
196
+ assert! (mock . merge (15.0 , 15 ) == 30 );
197
+ }
198
+
199
+ #[mock]
200
+ trait LifetimeTrait <'a , T >
201
+ where T : 'a {
202
+ fn return_value (& self , t : T ) -> & 'a T ;
203
+ }
204
+
205
+ static TEST_FLOAT : f32 = 1.0 ;
206
+
207
+ #[test]
208
+ fn generics_and_lifetime () {
209
+ let mut mock = MockLifetimeTrait :: <'static , f32 >:: new ();
210
+ let method = mock . method_return_value ()
211
+ . called_once ()
212
+ . set_result (& TEST_FLOAT );
213
+
214
+ mock . set_return_value (method );
215
+ assert! (mock . return_value (TEST_FLOAT . clone ()) == & TEST_FLOAT );
216
+ }
217
+
218
+
183
219
```
184
220
185
221
## TESTING
0 commit comments