Fix tests

This commit is contained in:
2019-05-29 15:38:00 +02:00
parent ba0fca8755
commit 23cc193333
3 changed files with 27 additions and 16 deletions

View File

@@ -8,12 +8,13 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
#[test] #[test]
fn advanced3_wide1() { fn advanced3_wide1() {
let mut machine = rustijvm::Machine::new_from_file("files/advanced/test-wide1.ijvm").unwrap(); use rustijvm::value::Value::Int;
let mut machine = rustijvm::Machine::new_from_file("files/advanced/test-wide1.ijvm").unwrap();
steps(&mut machine, 6); steps(&mut machine, 6);
assert_eq!(machine.cur_frame().get(1), Ok(0x1)); assert_eq!(machine.cur_frame().get(1), Ok(&Int(0x1)));
steps(&mut machine, 2); steps(&mut machine, 2);
assert_eq!(machine.cur_frame().get(257), Ok(0x2)); assert_eq!(machine.cur_frame().get(257), Ok(&Int(0x2)));
steps(&mut machine, 1); steps(&mut machine, 1);
assert_eq!(machine.get_tos(), Ok(0x1)); assert_eq!(machine.get_tos(), Ok(0x1));
@@ -23,12 +24,13 @@ fn advanced3_wide1() {
#[test] #[test]
fn advanced3_wide2() { fn advanced3_wide2() {
use rustijvm::value::Value::Int;
let mut machine = rustijvm::Machine::new_from_file("files/advanced/test-wide2.ijvm").unwrap(); let mut machine = rustijvm::Machine::new_from_file("files/advanced/test-wide2.ijvm").unwrap();
steps(&mut machine, 6); steps(&mut machine, 6);
assert_eq!(machine.cur_frame().get(1), Ok(0x1)); assert_eq!(machine.cur_frame().get(1), Ok(&Int(0x1)));
steps(&mut machine, 2); steps(&mut machine, 2);
assert_eq!(machine.cur_frame().get(32768), Ok(0x2)); assert_eq!(machine.cur_frame().get(32768), Ok(&Int(0x2)));
steps(&mut machine, 1); steps(&mut machine, 1);
assert_eq!(machine.get_tos(), Ok(0x1)); assert_eq!(machine.get_tos(), Ok(0x1));

View File

@@ -1,5 +1,7 @@
extern crate rustijvm; extern crate rustijvm;
use std::convert::TryInto;
fn steps(machine: &mut rustijvm::Machine, num: usize) { fn steps(machine: &mut rustijvm::Machine, num: usize) {
for _ in 0..num { for _ in 0..num {
machine.step().unwrap(); machine.step().unwrap();
@@ -44,7 +46,9 @@ fn advancedstack_contents() {
let size = stack.len(); let size = stack.len();
assert!(size >= 100); assert!(size >= 100);
let markers = (0..size).filter(|i| { stack.get(*i) == 0x2 }).count(); let markers = (0..size).filter(|i| {
stack.get(*i).try_into().unwrap_or(0) == 0x2
}).count();
assert!(markers >= 99); assert!(markers >= 99);
} }
@@ -55,7 +59,9 @@ fn advancedstack_method() {
steps(&mut machine, 8); steps(&mut machine, 8);
{ {
let stack = machine.cur_stack(); let stack = machine.cur_stack();
let markers = (0..stack.len()).filter(|i| { stack.get(*i) == 0x2 }).count(); let markers = (0..stack.len()).filter(|i| {
stack.get(*i).try_into().unwrap_or(0) == 0x2
}).count();
assert_eq!(markers, 4); assert_eq!(markers, 4);
} }
@@ -63,7 +69,9 @@ fn advancedstack_method() {
steps(&mut machine, 2 * 5000); steps(&mut machine, 2 * 5000);
{ {
let stack = machine.cur_stack(); let stack = machine.cur_stack();
let markers = (0..stack.len()).filter(|i| { stack.get(*i) == 0x2 }).count(); let markers = (0..stack.len()).filter(|i| {
stack.get(*i).try_into().unwrap_or(0) == 0x2
}).count();
assert!(markers > 4000); assert!(markers > 4000);
} }
} }

View File

@@ -100,23 +100,24 @@ fn task4_iteration_load() {
#[test] #[test]
fn task4_iinc() { fn task4_iinc() {
use rustijvm::value::Value::Int;
let mut machine = rustijvm::Machine::new_from_file("files/task4/IINCTest.ijvm").unwrap(); let mut machine = rustijvm::Machine::new_from_file("files/task4/IINCTest.ijvm").unwrap();
steps(&mut machine, 4); steps(&mut machine, 4);
assert_eq!(machine.cur_frame().get(0), Ok(0)); assert_eq!(machine.cur_frame().get(0), Ok(&Int(0)));
assert_eq!(machine.cur_frame().get(1), Ok(0)); assert_eq!(machine.cur_frame().get(1), Ok(&Int(0)));
steps(&mut machine, 1); steps(&mut machine, 1);
assert_eq!(machine.cur_frame().get(0), Ok(0)); assert_eq!(machine.cur_frame().get(0), Ok(&Int(0)));
steps(&mut machine, 1); steps(&mut machine, 1);
assert_eq!(machine.cur_frame().get(0), Ok(1)); assert_eq!(machine.cur_frame().get(0), Ok(&Int(1)));
steps(&mut machine, 1); steps(&mut machine, 1);
assert_eq!(machine.cur_frame().get(0), Ok(4)); assert_eq!(machine.cur_frame().get(0), Ok(&Int(4)));
steps(&mut machine, 1); steps(&mut machine, 1);
assert_eq!(machine.cur_frame().get(1), Ok(0)); assert_eq!(machine.cur_frame().get(1), Ok(&Int(0)));
steps(&mut machine, 1); steps(&mut machine, 1);
assert_eq!(machine.cur_frame().get(1), Ok(-1)); assert_eq!(machine.cur_frame().get(1), Ok(&Int(-1)));
steps(&mut machine, 1); steps(&mut machine, 1);
assert_eq!(machine.cur_frame().get(1), Ok(-4)); assert_eq!(machine.cur_frame().get(1), Ok(&Int(-4)));
} }