#![cfg(feature = "primitive-types")]
macro_rules! test_impl {
($name:ident, $type:ty) => {
::paste::item! {
#[test]
fn [< $name _decode_zero >]() {
assert_eq!(
prefix_hex::decode("0x0"),
Ok(<$type>::zero())
);
}
#[test]
fn [< $name _decode_err_no_body >]() {
assert_eq!(
prefix_hex::decode::<$type>("0x"),
Err(prefix_hex::Error::InvalidStringLength)
);
}
#[test]
fn [< $name _decode_invalid_character >]() {
assert_eq!(
prefix_hex::decode::<$type>("0x271y"),
Err(prefix_hex::Error::InvalidHexCharacter{index: 3, c: 'y'})
);
}
#[test]
fn [< $name _decode_truncated_even >]() {
assert_eq!(prefix_hex::decode("0x2710"), Ok(<$type>::from(10000)));
}
#[test]
fn [< $name _decode_truncated_odd >]() {
assert_eq!(prefix_hex::decode("0x102"), Ok(<$type>::from(258)));
}
#[test]
fn [< $name _encode >]() {
assert_eq!(prefix_hex::encode(<$type>::from(10000)), "0x2710".to_string())
}
}
};
}
test_impl!(u128, primitive_types::U128);
test_impl!(u256, primitive_types::U256);
test_impl!(u512, primitive_types::U512);