43 lines
1.2 KiB
Rust
43 lines
1.2 KiB
Rust
extern crate rustijvm;
|
|
|
|
fn steps(machine: &mut rustijvm::machine::Machine, num: usize) {
|
|
for _ in 0..num {
|
|
machine.step().unwrap();
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn advanced3_wide1() {
|
|
use rustijvm::value::Value::Int;
|
|
|
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/advanced/test-wide1.ijvm").unwrap();
|
|
machine.set_output(rustijvm::stubs::output_stub());
|
|
|
|
steps(&mut machine, 6);
|
|
assert_eq!(machine.cur_frame().get(1), Ok(&Int(0x1)));
|
|
steps(&mut machine, 2);
|
|
assert_eq!(machine.cur_frame().get(257), Ok(&Int(0x2)));
|
|
|
|
steps(&mut machine, 1);
|
|
assert_eq!(machine.get_tos(), Ok(0x1));
|
|
steps(&mut machine, 1);
|
|
assert_eq!(machine.get_tos(), Ok(0x2));
|
|
}
|
|
|
|
#[test]
|
|
fn advanced3_wide2() {
|
|
use rustijvm::value::Value::Int;
|
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/advanced/test-wide2.ijvm").unwrap();
|
|
machine.set_output(rustijvm::stubs::output_stub());
|
|
|
|
steps(&mut machine, 6);
|
|
assert_eq!(machine.cur_frame().get(1), Ok(&Int(0x1)));
|
|
steps(&mut machine, 2);
|
|
assert_eq!(machine.cur_frame().get(32768), Ok(&Int(0x2)));
|
|
|
|
steps(&mut machine, 1);
|
|
assert_eq!(machine.get_tos(), Ok(0x1));
|
|
steps(&mut machine, 1);
|
|
assert_eq!(machine.get_tos(), Ok(0x2));
|
|
}
|