blob: 999509348cd7116091f3ab046cc2ef8bba9107c7 [file] [log] [blame]
#[macro_use]
extern crate pretty_assertions;
#[macro_use]
extern crate derive_builder;
pub mod foo {
#[derive(Debug, PartialEq, Default, Builder, Clone)]
#[builder(private, setter(into))]
pub struct Lorem {
pub private: String,
#[builder(public)]
pub public: String,
}
#[derive(Debug, PartialEq, Default, Builder, Clone)]
#[builder(public, setter(into))]
pub struct Ipsum {
#[builder(private)]
pub private: String,
pub public: String,
}
#[test]
fn setters_same_module() {
let x = LoremBuilder::default()
.public("Hello")
.private("world!")
.build()
.unwrap();
assert_eq!(
x,
Lorem {
public: "Hello".into(),
private: "world!".into(),
}
);
let y = IpsumBuilder::default()
.public("Hello")
.private("world!")
.build()
.unwrap();
assert_eq!(
y,
Ipsum {
public: "Hello".into(),
private: "world!".into(),
}
);
}
}
#[test]
fn public_setters_foreign_module() {
let error = foo::IpsumBuilder::default()
.public("Hello")
.build()
.unwrap_err();
assert_eq!(&error.to_string(), "`private` must be initialized");
}