mod decode_tests;
mod encode_tests;
use crate::decode::*;
use crate::encode::*;
#[test]
fn test_lib_doc_demo() {
const S1: &str = "hello ";
const S2: &str = "world!";
let mut buf: [u8; 15] = [0; 15];
let mut cur = 0;
{
let mut write = |data: &[u8]| {
buf[cur..cur + data.len()].copy_from_slice(data);
cur += data.len();
};
let mut enc = Encoder::new();
write(&enc.enc_arr_len(2));
write(&enc.enc_str_len(S1.as_bytes().len() as u32));
write(S1.as_bytes());
write(&enc.enc_str_len(S2.as_bytes().len() as u32));
write(S2.as_bytes());
}
assert_eq!(
&[
146, 166, 104, 101, 108, 108, 111, 32, 166, 119, 111, 114, 108,
100, 33
],
&buf[..]
);
let mut dec = Decoder::new();
let mut iter = dec.parse(&buf);
assert_eq!(Some(Token::Len(LenType::Arr, 2)), iter.next());
assert_eq!(Some(Token::Len(LenType::Str, 6)), iter.next());
assert_eq!(Some(Token::Bin(S1.as_bytes())), iter.next());
assert_eq!(Some(Token::Len(LenType::Str, 6)), iter.next());
assert_eq!(Some(Token::Bin(S2.as_bytes())), iter.next());
assert_eq!(None, iter.next());
}