rust_decimal/fuzz.rs
1use crate::Decimal;
2
3use arbitrary::{Arbitrary, Result as ArbitraryResult, Unstructured};
4
5impl Arbitrary<'_> for crate::Decimal {
6 fn arbitrary(u: &mut Unstructured<'_>) -> ArbitraryResult<Self> {
7 let lo = u32::arbitrary(u)?;
8 let mid = u32::arbitrary(u)?;
9 let hi = u32::arbitrary(u)?;
10 let negative = bool::arbitrary(u)?;
11 let scale = u32::arbitrary(u)? % (Self::MAX_SCALE + 1);
12 Ok(Decimal::from_parts(lo, mid, hi, negative, scale))
13 }
14}