use hex::FromHex;
use crate::allocator::Allocator;
use crate::serde::de::node_from_bytes;
use crate::serde::de_br::node_from_bytes_backrefs;
use crate::serde::ser::node_to_bytes;
use crate::serde::ser_br::node_to_bytes_backrefs;
fn check_round_trip(obj_ser_br_hex: &str) {
let obj_ser_br = <Vec<u8>>::from_hex(obj_ser_br_hex).unwrap();
let mut allocator = Allocator::new();
let obj = node_from_bytes_backrefs(&mut allocator, &obj_ser_br).unwrap();
let obj_ser_no_br_1 = node_to_bytes(&allocator, obj).unwrap();
let mut allocator = Allocator::new();
let obj = node_from_bytes_backrefs(&mut allocator, &obj_ser_no_br_1).unwrap();
let obj_ser_no_br_2 = node_to_bytes(&allocator, obj).unwrap();
assert_eq!(obj_ser_no_br_1, obj_ser_no_br_2);
let mut allocator = Allocator::new();
let obj = node_from_bytes(&mut allocator, &obj_ser_no_br_1).unwrap();
let obj_ser_br_1 = node_to_bytes_backrefs(&allocator, obj).unwrap();
assert_eq!(obj_ser_br, obj_ser_br_1);
}
#[test]
fn test_round_trip() {
let check = check_round_trip;
check("01"); check("ff83666f6f83626172"); check("ff83666f6fff8362617280"); check("ffff0102ff0304"); check("ff01ff02ff03ff04ff05ff0680"); check("ff83666f6ffe02");
check("ff846c6f6e67ff86737472696e67ff826f66fffe0bff8474657874fffe1780");
check("ff83666f6ffffe01fffe01fffe01fffe01fffe01fffe0180");
}