Fix tests
This commit is contained in:
@@ -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));
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user