#[cfg(feature = "builder")]
#[test]
fn required_field_must_be_supplied() {
#[cfg(feature = "versioned")]
{
use rubo4e::v202501::Vertrag;
let _ = Vertrag::builder().build();
}
}
#[cfg(all(feature = "builder", feature = "versioned"))]
#[test]
fn bo_builder_auto_sets_typ_discriminant() {
use rubo4e::v202501::{BoTyp, Vertrag};
let vertrag = Vertrag::builder().build();
assert_eq!(vertrag.typ, Some(BoTyp::Vertrag));
}
#[cfg(all(feature = "builder", feature = "versioned"))]
#[test]
fn builder_setter_into_accepts_option_and_value() {
use rubo4e::v202501::Betrag;
use rubo4e::v202501::Geschaeftspartner;
let g1 = Geschaeftspartner::builder()
.organisationsname("ACME GmbH".to_owned())
.build();
assert_eq!(g1.organisationsname, Some("ACME GmbH".to_owned()));
let extracted: Option<String> = Some("Muster AG".to_owned());
let g2 = Geschaeftspartner::builder()
.organisationsname(extracted.clone())
.build();
assert_eq!(g2.organisationsname, extracted);
let g3 = Geschaeftspartner::builder()
.organisationsname(None::<String>)
.build();
assert_eq!(g3.organisationsname, None);
#[cfg(not(feature = "decimal"))]
{
let b = Betrag::builder().wert(Some("12.50".to_owned())).build();
assert_eq!(b.wert, Some("12.50".to_owned()));
}
#[cfg(feature = "decimal")]
{
use rust_decimal::Decimal;
use std::str::FromStr;
let amount = Decimal::from_str("12.50").unwrap();
let b = Betrag::builder().wert(Some(amount)).build();
assert_eq!(b.wert, Some(amount));
let b_none = Betrag::builder().wert(None::<Decimal>).build();
assert_eq!(b_none.wert, None);
}
let _ = (g1, g2, g3);
}
#[cfg(feature = "versioned")]
#[test]
fn functional_update_syntax_works() {
use rubo4e::v202501::Geschaeftspartner;
let g = Geschaeftspartner {
organisationsname: Some("ACME GmbH".to_owned()),
..Default::default()
};
assert_eq!(g.organisationsname, Some("ACME GmbH".to_owned()));
assert_eq!(g.nachname, None); }
#[cfg(feature = "builder")]
#[test]
fn compile_fail_required_field() {
let t = trybuild::TestCases::new();
t.compile_fail("tests/builder/ui/required_field_omitted.rs");
t.compile_fail("tests/builder/ui/bo_typ_setter_unavailable.rs");
}