platform-data 2.0.0

Data types and traits for the LinksPlatform
Documentation
use platform_data::{AddrToRaw, RawToAddr};

#[test]
fn test_addr_to_raw_roundtrip_u8() {
    for i in 0..=u8::MAX {
        let raw = AddrToRaw.convert(i);
        let addr = RawToAddr.convert(raw);
        assert_eq!(addr, i, "roundtrip failed for u8 value {i}");
    }
}

#[test]
fn test_addr_to_raw_roundtrip_u16() {
    for i in (0..=u16::MAX).step_by(251) {
        let raw = AddrToRaw.convert(i);
        let addr = RawToAddr.convert(raw);
        assert_eq!(addr, i);
    }
}

#[test]
fn test_addr_to_raw_roundtrip_u32() {
    let values: Vec<u32> = vec![0, 1, 100, 1000, u32::MAX / 2, u32::MAX - 1, u32::MAX];
    for v in values {
        let raw = AddrToRaw.convert(v);
        let addr = RawToAddr.convert(raw);
        assert_eq!(addr, v);
    }
}

#[test]
fn test_addr_to_raw_roundtrip_u64() {
    let values: Vec<u64> = vec![0, 1, 100, u64::MAX / 2, u64::MAX - 1, u64::MAX];
    for v in values {
        let raw = AddrToRaw.convert(v);
        let addr = RawToAddr.convert(raw);
        assert_eq!(addr, v);
    }
}

#[test]
fn test_addr_to_raw_roundtrip_usize() {
    let values: Vec<usize> = vec![0, 1, 42, usize::MAX / 2, usize::MAX];
    for v in values {
        let raw = AddrToRaw.convert(v);
        let addr = RawToAddr.convert(raw);
        assert_eq!(addr, v);
    }
}

#[test]
fn test_addr_to_raw_zero() {
    let raw = AddrToRaw.convert(0u64);
    let addr = RawToAddr.convert(raw);
    assert_eq!(addr, 0);
}

#[test]
fn test_raw_to_addr_zero() {
    let addr = RawToAddr.convert(0u64);
    let raw = AddrToRaw.convert(addr);
    assert_eq!(raw, 0);
}