#![cfg(test)]
use crate::isa::Long;
use crate::vm::Mem;
use std::assert_matches;
#[test]
fn test_mem_map_addr() {
assert_matches!(
Mem::map_addr(Long::from_u32(0x000000)),
Ok(0x000000),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0x100000)),
Ok(0x100000),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0x200000)),
Ok(0x200000),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0x300000)),
Ok(0x300000),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0x400000)),
Ok(0x400000),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0x500000)),
Ok(0x500000),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0x600000)),
Ok(0x600000),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0x700000)),
Ok(0x700000),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0x800000)),
Ok(0x800000),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0x87FFFF)),
Ok(0x87FFFF),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0x880000)),
Err(_),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0x900000)),
Err(_),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0xA00000)),
Err(_),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0xB00000)),
Err(_),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0xC00000)),
Err(_),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0xD00000)),
Err(_),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0xE00000)),
Err(_),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0xF00000)),
Ok(0x880000),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0xF003FF)),
Ok(0x8803FF),
);
assert_matches!(
Mem::map_addr(Long::from_u32(0xF00400)),
Err(_),
);
}