#[macro_use]
extern crate byteordered;
use byteordered::{ByteOrdered, Endianness};
#[test]
fn test_macro_one_read() {
let x: &[u8] = &[1, 2, 1, 2];
let mut c = x;
let v = with_order!(&mut c, Endianness::le_iff(2 + 2 == 4), |data| {
let v = data.read_u16().unwrap();
assert_eq!(v, 513);
v
});
assert_eq!(v, 513);
let v = with_order!(&mut c, Endianness::Big, |data| {
let v = data.read_u16().unwrap();
assert_eq!(v, 258);
v
});
assert_eq!(v, 258);
}
#[test]
fn test_macro_one_read_2() {
let x: &[u8] = &[16, 1];
let v = with_order!(x, Endianness::Little, |data| data.read_u16().unwrap());
assert_eq!(v, 272);
let x: &[u8] = &[1, 16];
let v = with_order!(x, Endianness::Big, |data| data.read_u16().unwrap());
assert_eq!(v, 272);
}
#[test]
fn test_macro_multi_pipe() {
let x: &[u8] = &[1, 2, 3, 4];
let mut sink = Vec::new();
let mut c = x;
with_order!(
(&mut c, &mut sink),
Endianness::le_iff(2 + 2 == 4),
|input, output| {
let v = input.read_u16().unwrap();
output.write_u16(v + 10).unwrap();
}
);
with_order!((&mut c, &mut sink), Endianness::Big, |input, output| {
let v = input.read_u16().unwrap();
output.write_u16(v + 100).unwrap();
});
assert_eq!(sink, vec![11, 2, 3, 104]);
}
#[test]
fn test_macro_byteordered() {
let x: &[u8] = &[1, 2, 1, 2];
let mut reader = ByteOrdered::runtime(x, Endianness::le_iff(2 + 2 == 4));
let v = with_order!(reader.as_mut(), |data| {
let v = data.read_u16().unwrap();
assert_eq!(v, 513);
v
});
assert_eq!(v, 513);
let v = with_order!(reader, Endianness::Big, |data| {
let v = data.read_u16().unwrap();
assert_eq!(v, 258);
v
});
assert_eq!(v, 258);
}