blob: e4be833240e156a8898fe5a8d7894877bad979e3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
pub fn build<T: Default>() -> T {
T::default()
}
pub fn build_with<T, F>(initializer: F) -> T
where
T: Default,
F: std::ops::FnOnce(&mut T),
{
let mut item = build::<T>();
initializer(&mut item);
item
}
#[cfg(test)]
mod tests {
use super::*;
#[derive(Default)]
struct Person {
name: String,
age: i32,
}
#[test]
fn build_test_it_builds_a_new_instance_with_default_values() {
let item = build::<Person>();
assert_eq!(item.name, "");
assert_eq!(item.age, 0);
}
#[test]
fn build_with_test_initializes_the_new_instance() {
let item = build_with(|item: &mut Person| {
item.name = String::from("pidge");
item.age = 42;
});
assert_eq!(item.name, "pidge");
assert_eq!(item.age, 42);
}
}
|