| #[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, |
| } |
| ); |
| } |