mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-26 19:51:11 +08:00
refactor: vm.rs 内联测试按属主模块归位
This commit is contained in:
@@ -387,4 +387,36 @@ mod tests {
|
||||
assert_eq!(bytecode[1], 0x0000_0040, "BREAK ext 字保持原值");
|
||||
assert_eq!(&bytecode[3..=10], &[0; 8], "后续 IC 扩展字被清零");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn write_ic_back_updates_slot_zero_ext_words() {
|
||||
let mut bc = vec![0u32; IC_EXT_WORDS];
|
||||
write_ic_back(bc.as_mut_slice(), IC_EXT_WORDS, 0x1234_5678, 7, 0);
|
||||
assert_eq!(bc[0], 0x0034_5678);
|
||||
assert_eq!(bc[1], 7);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn write_ic_back_rolls_fifo_and_drops_oldest_slot() {
|
||||
// 预置 8 字四槽(2 字/槽):槽 0=(0xA1,1,0)、槽 1=(0xA2,2,1)、槽 2=(0xA3,3,0)、槽 3=(0xA4,4,0)。
|
||||
let mut bc = vec![0u32; IC_EXT_WORDS];
|
||||
bc[0] = 0xA1;
|
||||
bc[1] = 1;
|
||||
bc[2] = 0xA2 | (1 << 24);
|
||||
bc[3] = 2;
|
||||
bc[4] = 0xA3;
|
||||
bc[5] = 3;
|
||||
bc[6] = 0xA4;
|
||||
bc[7] = 4;
|
||||
write_ic_back(bc.as_mut_slice(), IC_EXT_WORDS, 0xB0, 9, 2);
|
||||
// 新条目进槽 0;原槽 0..2 顺移到槽 1..3;最老槽 3 丢弃。
|
||||
assert_eq!(bc[0], 0xB0 | (2 << 24));
|
||||
assert_eq!(bc[1], 9);
|
||||
assert_eq!(bc[2], 0xA1);
|
||||
assert_eq!(bc[3], 1);
|
||||
assert_eq!(bc[4], 0xA2 | (1 << 24));
|
||||
assert_eq!(bc[5], 2);
|
||||
assert_eq!(bc[6], 0xA3);
|
||||
assert_eq!(bc[7], 3);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user