mirror of
https://git.proxmox.com/git/rustc
synced 2026-03-27 10:02:00 +00:00
53 lines
1.1 KiB
Rust
53 lines
1.1 KiB
Rust
#[macro_use]
|
|
extern crate pretty_assertions;
|
|
#[macro_use]
|
|
extern crate derive_builder;
|
|
|
|
#[derive(Debug, PartialEq, Eq, Builder)]
|
|
#[builder(custom_constructor, build_fn(private, name = "fallible_build"))]
|
|
struct Request {
|
|
url: &'static str,
|
|
username: &'static str,
|
|
#[builder(default, setter(into))]
|
|
password: Option<&'static str>,
|
|
}
|
|
|
|
impl RequestBuilder {
|
|
pub fn new(url: &'static str, username: &'static str) -> Self {
|
|
Self {
|
|
url: Some(url),
|
|
username: Some(username),
|
|
..Self::create_empty()
|
|
}
|
|
}
|
|
|
|
pub fn build(&self) -> Request {
|
|
self.fallible_build()
|
|
.expect("All required fields set upfront")
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn new_then_build_succeeds() {
|
|
assert_eq!(
|
|
RequestBuilder::new("...", "!!!").build(),
|
|
Request {
|
|
url: "...",
|
|
username: "!!!",
|
|
password: None
|
|
}
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn new_then_set_succeeds() {
|
|
assert_eq!(
|
|
RequestBuilder::new("...", "!!!").password("test").build(),
|
|
Request {
|
|
url: "...",
|
|
username: "!!!",
|
|
password: Some("test")
|
|
}
|
|
);
|
|
}
|