mirror of
https://git.proxmox.com/git/rustc
synced 2026-03-29 05:30:47 +00:00
41 lines
818 B
Rust
41 lines
818 B
Rust
#[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,
|
|
}
|
|
);
|
|
}
|