blob: d502340c68a0bd620235835aa77f8a991836b436 [file] [log] [blame]
#[macro_use]
extern crate pretty_assertions;
#[macro_use]
extern crate derive_builder;
#[derive(Debug, PartialEq, Default, Builder, Clone)]
struct Lorem {
#[builder(setter(into))]
full_opt: Option<String>,
#[builder(setter(into, strip_option))]
strip_opt: Option<String>,
#[builder(setter(strip_option))]
strip_opt_i32: Option<i32>,
#[builder(setter(strip_option))]
strip_opt_vec: Option<Vec<i32>>,
}
#[derive(Debug, PartialEq, Default, Builder, Clone)]
#[builder(setter(into, strip_option))]
struct Ipsum {
foo: u32,
strip_opt: Option<String>,
#[builder(default)]
strip_opt_with_default: Option<String>,
}
#[test]
fn generic_field() {
let x = LoremBuilder::default()
.full_opt(Some("foo".to_string()))
.strip_opt("bar")
.strip_opt_i32(32)
.strip_opt_vec(vec![33])
.build()
.unwrap();
assert_eq!(
x,
Lorem {
full_opt: Some("foo".to_string()),
strip_opt: Some("bar".to_string()),
strip_opt_i32: Some(32),
strip_opt_vec: Some(vec![33]),
}
);
}
#[test]
fn generic_struct() {
let x = IpsumBuilder::default()
.foo(42u8)
.strip_opt("bar")
.build()
.unwrap();
assert_eq!(
x,
Ipsum {
foo: 42u32,
strip_opt: Some("bar".to_string()),
strip_opt_with_default: None,
}
);
}