Add tests to ensure correct constant calculation

This commit is contained in:
Jeremy Soller
2020-09-06 13:00:01 -06:00
parent f5e8c031ca
commit 2df212f48d
2 changed files with 25 additions and 1 deletions
+4 -1
View File
@@ -19,11 +19,14 @@ pub trait Arch {
const PAGE_SIZE: usize = 1 << Self::PAGE_SHIFT;
const PAGE_OFFSET_MASK: usize = Self::PAGE_SIZE - 1;
const PAGE_ADDRESS_MASK: usize = !Self::PAGE_OFFSET_MASK;
const PAGE_ADDRESS_SHIFT: usize = Self::PAGE_LEVELS * Self::PAGE_ENTRY_SHIFT + Self::PAGE_SHIFT;
const PAGE_ADDRESS_SIZE: usize = 1 << Self::PAGE_ADDRESS_SHIFT;
const PAGE_ADDRESS_MASK: usize = Self::PAGE_ADDRESS_SIZE - 1 - Self::PAGE_OFFSET_MASK;
const PAGE_ENTRY_SIZE: usize = 1 << (Self::PAGE_SHIFT - Self::PAGE_ENTRY_SHIFT);
const PAGE_ENTRIES: usize = 1 << Self::PAGE_ENTRY_SHIFT;
const PAGE_ENTRY_MASK: usize = Self::PAGE_ENTRIES - 1;
//TODO: allow this to differ from page address mask
const ENTRY_ADDRESS_MASK: usize = Self::PAGE_ADDRESS_MASK;
const ENTRY_FLAGS_MASK: usize = !Self::ENTRY_ADDRESS_MASK;
+21
View File
@@ -45,3 +45,24 @@ impl Arch for X8664Arch {
unimplemented!();
}
}
#[cfg(test)]
mod tests {
use crate::Arch;
use super::X8664Arch;
#[test]
fn constants() {
assert_eq!(X8664Arch::PAGE_SIZE, 4096);
assert_eq!(X8664Arch::PAGE_OFFSET_MASK, 0xFFF);
assert_eq!(X8664Arch::PAGE_ADDRESS_SHIFT, 48);
assert_eq!(X8664Arch::PAGE_ADDRESS_SIZE, 0x0001_0000_0000_0000);
assert_eq!(X8664Arch::PAGE_ADDRESS_MASK, 0x0000_FFFF_FFFF_F000);
assert_eq!(X8664Arch::PAGE_ENTRY_SIZE, 8);
assert_eq!(X8664Arch::PAGE_ENTRIES, 512);
assert_eq!(X8664Arch::PAGE_ENTRY_MASK, 0x1FF);
assert_eq!(X8664Arch::ENTRY_ADDRESS_MASK, 0x0000_FFFF_FFFF_F000);
assert_eq!(X8664Arch::ENTRY_FLAGS_MASK, 0xFFFF_0000_0000_0FFF);
}
}