use super::*;
#[test]
fn serde_schema() {
let schema = Schema {
relax_type_checks: true,
layouts: DenseMap(vec![Some(SchemaLayout {
size: 1,
bits: 0,
fields: DenseMap::default(),
type_name: String::new(),
})]),
root_layout: 0,
file_version: 1,
};
let bytes = schema.to_bytes().unwrap();
let expect = [
0x11, 0x1b, 0x01, 0x4c, 0x00, 0x15, 0x02, 0x2b, 0x00, 0x18, 0x00, 0x00, 0x25, 0x02, 0x00, ];
assert_eq!(bytes, expect);
let got = Schema::parse(&bytes).unwrap();
assert_eq!(got, schema);
}
#[test]
fn de_frozen() {
#[derive(Debug, PartialEq, Eq, Deserialize)]
struct Pair {
a: u32,
#[serde(default)]
b: u32,
c: u32,
}
let schema = Schema {
relax_type_checks: true,
layouts: DenseMap(vec![
None,
Some(SchemaLayout {
size: 0,
bits: 8,
fields: DenseMap(vec![
None,
Some(SchemaField {
layout_id: 2,
offset: 0,
}),
None,
Some(SchemaField {
layout_id: 2,
offset: -4,
}),
]),
type_name: String::new(),
}),
Some(SchemaLayout {
size: 0,
bits: 4,
fields: DenseMap::default(),
type_name: String::new(),
}),
]),
root_layout: 1,
file_version: 1,
};
let de = super::serde_frozen::deserialize::<Pair>(&schema, b"\x42\0\0\0\0\0\0\0").unwrap();
assert_eq!(
de,
Pair {
a: 0x2,
b: 0,
c: 0x4
}
);
}