#[path = "../../../os-vfs-inode-table/src/lib.rs"] mod table; fn rows() -> [table::Inode; 3] { [ table::Inode {number: 1, kind: table::Kind::Directory, links: 1, size: 0, first_block: 0, block_count: 0, reserved: 0}, table::Inode {number: 2, kind: table::Kind::Regular, links: 1, size: 513, first_block: 100, block_count: 2, reserved: 0}, table::Inode {number: 3, kind: table::Kind::Regular, links: 1, size: 1, first_block: 200, block_count: 1, reserved: 0}, ] } #[test] fn os_vfs_inode_table_positive() { let verified = table::Table::validate(rows(), 2048).unwrap(); assert_eq!(verified.disk_blocks(), 2048); assert_eq!(verified.get(1).unwrap().kind, table::Kind::Directory); assert_eq!(verified.get(2).unwrap().size, 513); assert_eq!(verified.get(3).unwrap().first_block, 200); assert_eq!(verified.get(4), Err(table::Error::NoEntry)); } #[test] fn os_vfs_inode_table_negative() { let mut duplicate = rows(); duplicate[2].number = 2; assert_eq!(table::Table::validate(duplicate, 2048), Err(table::Error::DuplicateInode)); let mut overlap = rows(); overlap[2].first_block = 101; assert_eq!(table::Table::validate(overlap, 2048), Err(table::Error::OverlappingExtent)); let mut corrupt_size = rows(); corrupt_size[1].size = 1025; assert_eq!(table::Table::validate(corrupt_size, 2048), Err(table::Error::CorruptSize)); let mut outside = rows(); outside[2].first_block = 2048; assert_eq!(table::Table::validate(outside, 2048), Err(table::Error::BadExtent)); let mut reserved = rows(); reserved[1].reserved = 1; assert_eq!(table::Table::validate(reserved, 2048), Err(table::Error::InvalidReserved)); let mut root = rows(); root[0].number = 4; assert_eq!(table::Table::validate(root, 2048), Err(table::Error::BadRoot)); }