use proptest::prelude::*;
use wire_codec::zigzag;
proptest! {
#[test]
fn zigzag_i32_round_trip(value in any::<i32>()) {
prop_assert_eq!(zigzag::decode_i32(zigzag::encode_i32(value)), value);
}
#[test]
fn zigzag_i64_round_trip(value in any::<i64>()) {
prop_assert_eq!(zigzag::decode_i64(zigzag::encode_i64(value)), value);
}
#[test]
fn zigzag_i32_u32_round_trip(encoded in any::<u32>()) {
prop_assert_eq!(zigzag::encode_i32(zigzag::decode_i32(encoded)), encoded);
}
#[test]
fn zigzag_i64_u64_round_trip(encoded in any::<u64>()) {
prop_assert_eq!(zigzag::encode_i64(zigzag::decode_i64(encoded)), encoded);
}
#[test]
fn zigzag_i32_small_magnitude_stays_small(value in -1_000i32..1_000) {
let encoded = zigzag::encode_i32(value);
prop_assert!(encoded < 2_001, "value={value} encoded={encoded}");
}
}