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}