Most tests yay
This commit is contained in:
61
tests/advanced2.rs
Normal file
61
tests/advanced2.rs
Normal file
@@ -0,0 +1,61 @@
|
||||
extern crate rustijvm;
|
||||
|
||||
fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
||||
for _ in 0..num {
|
||||
machine.step().unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn advanced2_nested_invoke_simple() {
|
||||
let mut machine = rustijvm::Machine::new_from_file("files/advanced/test-nestedinvoke-simple.ijvm").unwrap();
|
||||
|
||||
steps(&mut machine, 1);
|
||||
let pc_main = machine.get_program_counter() + 3;
|
||||
steps(&mut machine, 1);
|
||||
|
||||
assert_ne!(machine.get_program_counter(), pc_main);
|
||||
steps(&mut machine, 1);
|
||||
assert_ne!(machine.get_tos(), Ok(0x9));
|
||||
|
||||
let pc_magic = machine.get_program_counter() + 3;
|
||||
steps(&mut machine, 1);
|
||||
assert_ne!(machine.get_program_counter(), pc_magic);
|
||||
|
||||
let pc_addone = machine.get_program_counter() + 3;
|
||||
steps(&mut machine, 2);
|
||||
assert_ne!(machine.get_program_counter(), pc_addone);
|
||||
assert_eq!(machine.get_program_counter(), pc_magic);
|
||||
|
||||
steps(&mut machine, 1);
|
||||
assert_ne!(machine.get_program_counter(), pc_magic);
|
||||
assert_eq!(machine.get_program_counter(), pc_main);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn advanced2_nested_invoke() {
|
||||
let mut machine = rustijvm::Machine::new_from_file("files/advanced/test-nestedinvoke.ijvm").unwrap();
|
||||
|
||||
steps(&mut machine, 8);
|
||||
assert_eq!(machine.get_tos(), Ok(0x6));
|
||||
steps(&mut machine, 1);
|
||||
assert_eq!(machine.get_tos(), Ok(0x9));
|
||||
steps(&mut machine, 1);
|
||||
assert_eq!(machine.get_tos(), Ok(0x9));
|
||||
steps(&mut machine, 1);
|
||||
assert_ne!(machine.get_tos(), Ok(0x9));
|
||||
steps(&mut machine, 1);
|
||||
assert_eq!(machine.get_tos(), Ok(0x9));
|
||||
steps(&mut machine, 1);
|
||||
|
||||
steps(&mut machine, 1);
|
||||
assert_eq!(machine.get_tos(), Ok(0x9));
|
||||
steps(&mut machine, 1);
|
||||
assert_eq!(machine.get_tos(), Ok(0x1));
|
||||
steps(&mut machine, 1);
|
||||
assert_eq!(machine.get_tos(), Ok(0xA));
|
||||
steps(&mut machine, 1);
|
||||
assert_eq!(machine.get_tos(), Ok(0xA));
|
||||
steps(&mut machine, 3);
|
||||
assert_eq!(machine.get_tos(), Ok(0xA));
|
||||
}
|
||||
Reference in New Issue
Block a user