use codeq::Decode;
use codeq::Encode;
use pretty_assertions::assert_eq;
use crate::v00x::RawVLArray;
use crate::v00x::RawVLArrayBuilder;
#[test]
fn test_build() -> anyhow::Result<()> {
let b = RawVLArrayBuilder::new(None);
let vla = b.build(vec!["hello", "world", "foo", "bar"]);
let mut buf = Vec::new();
vla.encode(&mut buf)?;
let mut want: Vec<u8> = vec![
b'v', b'l', b'a', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 10, 0, 0, 0, 13, 0, 0, 0, 16, ];
want.extend_from_slice(b"hello");
want.extend_from_slice(b"world");
want.extend_from_slice(b"foo");
want.extend_from_slice(b"bar");
assert_eq!(want, buf);
let got = RawVLArray::decode(&buf[..])?;
assert_eq!(vla, got);
Ok(())
}