use multi_codec::Codec;
use multi_key::{Builder, Multikey, KEY_CODECS};
use multi_trait::TryDecodeFrom;
use proptest::prelude::*;
#[test]
fn test_multikey_roundtrip() {
proptest!(|(_unit in 0..1u8)| {
let mut rng = rand::rng();
for &codec in KEY_CODECS.iter().take(2) {
if let Ok(mk1) = Builder::new_from_random_bytes(codec, &mut rng) {
if let Ok(mk1) = mk1.try_build() {
let bytes: Vec<u8> = mk1.clone().into();
let (mk2, remaining) = Multikey::try_decode_from(&bytes).unwrap();
prop_assert_eq!(&mk1, &mk2);
prop_assert!(remaining.is_empty());
}
}
}
});
}
#[test]
fn test_clone_equality() {
proptest!(|(_unit in 0..1u8)| {
let mut rng = rand::rng();
if let Ok(builder) = Builder::new_from_random_bytes(Codec::Ed25519Priv, &mut rng) {
if let Ok(mk1) = builder.try_build() {
let mk2 = mk1.clone();
prop_assert_eq!(&mk1, &mk2);
}
}
});
}