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
|
#[macro_use]
extern crate pretty_assertions;
#[macro_use]
extern crate derive_builder;
#[derive(Debug, PartialEq, Default, Builder, Clone)]
#[builder(name = "MyBuilder")]
struct Lorem {
ipsum: &'static str,
pub dolor: Option<&'static str>,
pub sit: i32,
amet: bool,
}
#[test]
fn error_if_uninitialized() {
let error = MyBuilder::default().build().unwrap_err();
assert_eq!(&error.to_string(), "`ipsum` must be initialized");
}
#[test]
fn builder_test() {
let x: Lorem = MyBuilder::default()
.ipsum("lorem")
.dolor(Some("dolor"))
.sit(42)
.amet(true)
.build()
.unwrap();
assert_eq!(
x,
Lorem {
ipsum: "lorem",
dolor: Some("dolor"),
sit: 42,
amet: true,
}
);
}
|