#![allow(clippy::expect_used, clippy::panic, clippy::unwrap_used)]
use zerodds_ast_layout::key::FixedDigitCount;
use zerodds_wire::FixedDigits;
fn crossed(count: FixedDigitCount) -> FixedDigits {
match count {
FixedDigitCount::Declared => FixedDigits::Declared,
FixedDigitCount::ValuePrecision => FixedDigits::ValuePrecision,
FixedDigitCount::ValueStringDigits => FixedDigits::ValueStringDigits,
}
}
#[test]
fn both_halves_answer_the_same_over_every_argument() {
for count in FixedDigitCount::ALL {
let digits = crossed(count);
for declared in 0..=u8::MAX {
for significant in 0..=u8::MAX {
let string_digits = significant;
assert_eq!(
count.wire_digits(declared, significant, string_digits),
digits.wire_digits(declared, significant, string_digits),
"{count:?}: the two halves disagree at declared={declared}, \
significant={significant}, string_digits={string_digits}"
);
}
}
}
}
#[test]
fn neither_half_ever_writes_a_fixed_without_digits() {
for count in FixedDigitCount::ALL {
for significant in 0..=u8::MAX {
let string_digits = significant;
assert_ne!(
count.wire_digits(1, significant, string_digits),
0,
"{count:?} answers zero digits at significant={significant}"
);
assert_ne!(crossed(count).wire_digits(1, significant, string_digits), 0);
}
}
}