#![allow(clippy::used_underscore_binding, clippy::all, warnings, missing_docs)]
use super::*;
#[ allow( unused_imports ) ]
use ::former::prelude::*;
use ::former::Former;
#[ derive( Debug, PartialEq, Default, Clone, Former ) ]
pub struct ComplexInner {
pub title: String,
pub count: i32,
pub active: bool,
}
#[ derive( Debug, PartialEq, Default, Clone, Former ) ]
pub struct SecondaryInner {
pub value: f64,
pub name: String,
}
#[ derive( Debug, PartialEq, Former ) ]
#[ allow( non_camel_case_types ) ] #[ former( standalone_constructors ) ]
pub enum UltimateMixedEnum {
SimpleUnit,
AnotherUnit,
#[ scalar ]
ZeroTuple(),
#[ scalar ]
ScalarTuple(i32, String),
SubformTuple(ComplexInner),
MultiTuple(String, ComplexInner, bool),
#[ scalar ]
ZeroStruct {},
#[ scalar ]
ScalarStruct { id: i32, name: String },
SubformStruct { inner: ComplexInner },
MultiStruct {
primary: ComplexInner,
secondary: SecondaryInner,
active: bool
},
#[ scalar ]
ComplexScalar {
id: u64,
title: String,
value: f64,
flags: bool
},
AdvancedMixed(SecondaryInner, bool),
}
#[ test ]
fn simple_unit_test() {
let got = UltimateMixedEnum::simple_unit();
let expected = UltimateMixedEnum::SimpleUnit;
assert_eq!(got, expected);
}
#[ test ]
fn another_unit_test() {
let got = UltimateMixedEnum::another_unit();
let expected = UltimateMixedEnum::AnotherUnit;
assert_eq!(got, expected);
}
#[ test ]
fn zero_tuple_test() {
let got = UltimateMixedEnum::zero_tuple();
let expected = UltimateMixedEnum::ZeroTuple();
assert_eq!(got, expected);
}
#[ test ]
fn scalar_tuple_test() {
let got = UltimateMixedEnum::scalar_tuple(42, "scalar".to_string());
let expected = UltimateMixedEnum::ScalarTuple(42, "scalar".to_string());
assert_eq!(got, expected);
}
#[ test ]
fn subform_tuple_test() {
let inner = ComplexInner {
title: "tuple_subform".to_string(),
count: 99,
active: true
};
let got = UltimateMixedEnum::subform_tuple()
._0(inner.clone())
.form();
let expected = UltimateMixedEnum::SubformTuple(inner);
assert_eq!(got, expected);
}
#[ test ]
fn multi_tuple_test() {
let inner = ComplexInner {
title: "multi_tuple".to_string(),
count: 123,
active: false
};
let got = UltimateMixedEnum::multi_tuple()
._0("multi".to_string())
._1(inner.clone())
._2(true)
.form();
let expected = UltimateMixedEnum::MultiTuple("multi".to_string(), inner, true);
assert_eq!(got, expected);
}
#[ test ]
fn zero_struct_test() {
let got = UltimateMixedEnum::zero_struct();
let expected = UltimateMixedEnum::ZeroStruct {};
assert_eq!(got, expected);
}
#[ test ]
fn scalar_struct_test() {
let got = UltimateMixedEnum::scalar_struct(777, "struct_scalar".to_string());
let expected = UltimateMixedEnum::ScalarStruct {
id: 777,
name: "struct_scalar".to_string()
};
assert_eq!(got, expected);
}
#[ test ]
fn subform_struct_test() {
let inner = ComplexInner {
title: "struct_subform".to_string(),
count: 555,
active: true
};
let got = UltimateMixedEnum::subform_struct()
.inner(inner.clone())
.form();
let expected = UltimateMixedEnum::SubformStruct { inner };
assert_eq!(got, expected);
}
#[ test ]
fn multi_struct_test() {
let primary = ComplexInner {
title: "primary".to_string(),
count: 111,
active: true
};
let secondary = SecondaryInner {
value: 2.71,
name: "secondary".to_string()
};
let got = UltimateMixedEnum::multi_struct()
.primary(primary.clone())
.secondary(secondary.clone())
.active(false)
.form();
let expected = UltimateMixedEnum::MultiStruct {
primary,
secondary,
active: false
};
assert_eq!(got, expected);
}
#[ test ]
fn complex_scalar_test() {
let got = UltimateMixedEnum::complex_scalar(
9999_u64,
"complex".to_string(),
3.14159,
true
);
let expected = UltimateMixedEnum::ComplexScalar {
id: 9999,
title: "complex".to_string(),
value: 3.14159,
flags: true
};
assert_eq!(got, expected);
}
#[ test ]
fn advanced_mixed_test() {
let secondary = SecondaryInner {
value: 1.618,
name: "advanced".to_string()
};
let got = UltimateMixedEnum::advanced_mixed()
._0(secondary.clone())
._1(true)
.form();
let expected = UltimateMixedEnum::AdvancedMixed(secondary, true);
assert_eq!(got, expected);
}
#[ test ]
fn ultimate_mixed_stress_test() {
let variants = vec![
UltimateMixedEnum::simple_unit(),
UltimateMixedEnum::another_unit(),
UltimateMixedEnum::zero_tuple(),
UltimateMixedEnum::zero_struct(),
UltimateMixedEnum::scalar_tuple(1, "test".to_string()),
UltimateMixedEnum::scalar_struct(2, "test2".to_string()),
UltimateMixedEnum::complex_scalar(3, "test3".to_string(), 1.0, false),
];
assert_eq!(variants.len(), 7);
assert!(matches!(variants[0], UltimateMixedEnum::SimpleUnit));
assert!(matches!(variants[1], UltimateMixedEnum::AnotherUnit));
assert!(matches!(variants[2], UltimateMixedEnum::ZeroTuple()));
assert!(matches!(variants[3], UltimateMixedEnum::ZeroStruct {}));
assert!(matches!(variants[4], UltimateMixedEnum::ScalarTuple(1, _)));
assert!(matches!(variants[5], UltimateMixedEnum::ScalarStruct { id: 2, .. }));
assert!(matches!(variants[6], UltimateMixedEnum::ComplexScalar { id: 3, .. }));
}
#[ test ]
fn architectural_validation_test() {
let unit = UltimateMixedEnum::simple_unit();
let tuple = UltimateMixedEnum::scalar_tuple(42, "validation".to_string());
let struct_variant = UltimateMixedEnum::scalar_struct(99, "struct".to_string());
assert_ne!(unit, tuple);
assert_ne!(tuple, struct_variant);
assert_ne!(struct_variant, unit);
}