macro_rules! integer_tests {
(
$(
$ty:ty: {
value: $value:expr,
be_bytes: $be_bytes:expr,
le_bytes: $le_bytes:expr,
}
),* $(,)?
) => {
$(
paste! {
#[test]
fn [<test_read_ $ty _be>]() -> io::Result<()> {
let mut data = Cursor::new($be_bytes);
let mut reader = AsyncReadBytes::new(&mut data);
assert_eq!(block_on(reader.[<read_ $ty>]::<BE>())?, $value);
Ok(())
}
#[test]
fn [<test_read_ $ty _le>]() -> io::Result<()> {
let mut data = Cursor::new($le_bytes);
let mut reader = AsyncReadBytes::new(&mut data);
assert_eq!(block_on(reader.[<read_ $ty>]::<LE>())?, $value);
Ok(())
}
#[test]
fn [<test_read_ $ty _ne>]() -> io::Result<()> {
let value: $ty = $value;
let bytes = value.to_ne_bytes();
let mut data = Cursor::new(bytes);
let mut reader = AsyncReadBytes::new(&mut data);
assert_eq!(block_on(reader.[<read_ $ty _ne>]())?, value);
Ok(())
}
#[test]
fn [<test_write_ $ty _be>]() -> io::Result<()> {
let mut buf = Vec::new();
let mut writer = AsyncWriteBytes::new(&mut buf);
block_on(writer.[<write_ $ty>]::<BE>($value))?;
assert_eq!(buf, $be_bytes);
Ok(())
}
#[test]
fn [<test_write_ $ty _le>]() -> io::Result<()> {
let mut buf = Vec::new();
let mut writer = AsyncWriteBytes::new(&mut buf);
block_on(writer.[<write_ $ty>]::<LE>($value))?;
assert_eq!(buf, $le_bytes);
Ok(())
}
#[test]
fn [<test_write_ $ty _ne>]() -> io::Result<()> {
let value: $ty = $value;
let mut buf = Vec::new();
let mut writer = AsyncWriteBytes::new(&mut buf);
block_on(writer.[<write_ $ty _ne>](value))?;
assert_eq!(buf, value.to_ne_bytes());
Ok(())
}
}
)*
};
}
macro_rules! float_tests {
(
$(
$ty:ty: {
value: $value:expr,
be_bytes: $be_bytes:expr,
le_bytes: $le_bytes:expr,
}
),* $(,)?
) => {
$(
paste! {
#[test]
fn [<test_read_ $ty _be>]() -> io::Result<()> {
let mut data = Cursor::new($be_bytes);
let mut reader = AsyncReadBytes::new(&mut data);
let result = block_on(reader.[<read_ $ty>]::<BE>())?;
assert_eq!(result.to_bits(), ($value as $ty).to_bits());
Ok(())
}
#[test]
fn [<test_read_ $ty _le>]() -> io::Result<()> {
let mut data = Cursor::new($le_bytes);
let mut reader = AsyncReadBytes::new(&mut data);
let result = block_on(reader.[<read_ $ty>]::<LE>())?;
assert_eq!(result.to_bits(), ($value as $ty).to_bits());
Ok(())
}
#[test]
fn [<test_read_ $ty _ne>]() -> io::Result<()> {
let value: $ty = $value;
let bytes = value.to_ne_bytes();
let mut data = Cursor::new(bytes);
let mut reader = AsyncReadBytes::new(&mut data);
let result = block_on(reader.[<read_ $ty _ne>]())?;
assert_eq!(result.to_bits(), value.to_bits());
Ok(())
}
#[test]
fn [<test_write_ $ty _be>]() -> io::Result<()> {
let mut buf = Vec::new();
let mut writer = AsyncWriteBytes::new(&mut buf);
block_on(writer.[<write_ $ty>]::<BE>($value))?;
assert_eq!(buf, $be_bytes);
Ok(())
}
#[test]
fn [<test_write_ $ty _le>]() -> io::Result<()> {
let mut buf = Vec::new();
let mut writer = AsyncWriteBytes::new(&mut buf);
block_on(writer.[<write_ $ty>]::<LE>($value))?;
assert_eq!(buf, $le_bytes);
Ok(())
}
#[test]
fn [<test_write_ $ty _ne>]() -> io::Result<()> {
let value: $ty = $value;
let mut buf = Vec::new();
let mut writer = AsyncWriteBytes::new(&mut buf);
block_on(writer.[<write_ $ty _ne>](value))?;
assert_eq!(buf, value.to_ne_bytes());
Ok(())
}
}
)*
};
}