use proptest::prelude::*;
use crate::{
ironwood::{Nullifier, ShieldedData},
orchard,
};
impl Arbitrary for Nullifier {
type Parameters = ();
fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy {
any::<orchard::Nullifier>().prop_map(Nullifier).boxed()
}
type Strategy = BoxedStrategy<Self>;
}
impl Arbitrary for ShieldedData {
type Parameters = ();
fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy {
(any::<orchard::ShieldedData>(), any::<u8>())
.prop_map(|(mut shielded_data, flag_bits)| {
shielded_data.flags = orchard::Flags::from_bits_truncate(flag_bits);
Self::new(orchard::ShieldedDataV6::new(shielded_data))
})
.boxed()
}
type Strategy = BoxedStrategy<Self>;
}