#![cfg(feature = "serde")]
use satint::{Si8, Si16, Si32, Si64, Si128, Sisize, Su8, Su16, Su32, Su64, Su128, Susize};
fn assert_serialize<T: serde::Serialize>() {}
fn assert_deserialize<T>()
where
T: for<'de> serde::Deserialize<'de>,
{
}
#[test]
fn concrete_aliases_implement_serde_traits() {
assert_serialize::<Si8>();
assert_serialize::<Si16>();
assert_serialize::<Si32>();
assert_serialize::<Si64>();
assert_serialize::<Si128>();
assert_serialize::<Sisize>();
assert_serialize::<Su8>();
assert_serialize::<Su16>();
assert_serialize::<Su32>();
assert_serialize::<Su64>();
assert_serialize::<Su128>();
assert_serialize::<Susize>();
assert_deserialize::<Si8>();
assert_deserialize::<Si16>();
assert_deserialize::<Si32>();
assert_deserialize::<Si64>();
assert_deserialize::<Si128>();
assert_deserialize::<Sisize>();
assert_deserialize::<Su8>();
assert_deserialize::<Su16>();
assert_deserialize::<Su32>();
assert_deserialize::<Su64>();
assert_deserialize::<Su128>();
assert_deserialize::<Susize>();
}
#[test]
fn round_trips_as_inner_primitive() {
use serde_test::{Token, assert_tokens};
assert_tokens(&Si8::new(-12), &[Token::I8(-12)]);
assert_tokens(&Si16::new(-1234), &[Token::I16(-1234)]);
assert_tokens(&Si32::new(-123_456), &[Token::I32(-123_456)]);
assert_tokens(&Si64::new(-123_456_789), &[Token::I64(-123_456_789)]);
assert_tokens(&Sisize::new(-123_456), &[Token::I64(-123_456)]);
assert_tokens(&Su8::new(200), &[Token::U8(200)]);
assert_tokens(&Su16::new(60_000), &[Token::U16(60_000)]);
assert_tokens(&Su32::new(3_000_000_000), &[Token::U32(3_000_000_000)]);
assert_tokens(&Su64::new(u64::MAX), &[Token::U64(u64::MAX)]);
assert_tokens(&Susize::new(123_456), &[Token::U64(123_456)]);
}