55 lines
1.2 KiB
Rust
55 lines
1.2 KiB
Rust
use binary_loader;
|
|
|
|
struct DBHeader {
|
|
magic: u8,
|
|
major_version: u8, // actually u4 in data
|
|
minor_version: u8, // actually u4 in data
|
|
reserved: u16,
|
|
record_count: u32,
|
|
}
|
|
|
|
impl DBHeader {
|
|
fn from(raw: [u8; 8]) -> DBHeader {
|
|
|
|
DBHeader {
|
|
magic: binary_loader::load_u8(&raw[0]),
|
|
major_version: binary_loader::load_high_u4(&raw[1]),
|
|
minor_version: binary_loader::load_low_u4(&raw[1]),
|
|
reserved: binary_loader::load_u16(&raw[2..4]),
|
|
record_count: binary_loader::load_u32(&raw[4..8]),
|
|
}
|
|
}
|
|
}
|
|
|
|
struct RecordHeader {
|
|
field_count: u8,
|
|
length: u8,
|
|
crc: u16,
|
|
}
|
|
|
|
struct Field {
|
|
field_type: u8,
|
|
value: String,
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
#[test]
|
|
fn it_works() {
|
|
assert_eq!(2 + 2, 4);
|
|
}
|
|
|
|
#[test]
|
|
fn load_empty_db_header() {
|
|
let header = [0xDB, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
|
|
let db_header = DBHeader::from(header);
|
|
assert_eq!(db_header.magic, 0xDB);
|
|
assert_eq!(db_header.major_version, 0);
|
|
assert_eq!(db_header.minor_version, 1);
|
|
assert_eq!(db_header.reserved, 0);
|
|
assert_eq!(db_header.record_count, 0);
|
|
|
|
}
|
|
}
|