Can load DBHeader

This commit is contained in:
2020-11-10 15:50:17 -07:00
parent 1c1721b861
commit 00638fca6e

View File

@@ -1,3 +1,5 @@
use binary_loader;
struct DBHeader {
magic: u8,
major_version: u8, // actually u4 in data
@@ -9,20 +11,12 @@ struct DBHeader {
impl DBHeader {
fn from(raw: [u8; 8]) -> DBHeader {
let mut reserved : u16 = 0x0000;
reserved = raw[2].into();
reserved <<= 8;
let temp : u16 = raw[3].into();
reserved |= temp;
let mut record_count : u32 = 0x00000000;
DBHeader {
magic: raw[0],
major_version: (raw[1] | 0xF0) >> 4,
minor_version: (raw[1] | 0x0F),
reserved: reserved,
record_count: record_count,
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]),
}
}
}
@@ -40,6 +34,7 @@ struct Field {
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
@@ -50,5 +45,10 @@ mod tests {
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);
}
}