Most tests yay

This commit is contained in:
2018-05-23 13:40:24 +02:00
parent a65ab6aafa
commit 7e044abb53
12 changed files with 820 additions and 41 deletions

View File

@@ -2,7 +2,6 @@ extern crate rustijvm;
fn steps(machine: &mut rustijvm::Machine, num: usize) {
for _ in 0..num {
println!("step");
machine.step().unwrap();
}
}
@@ -11,78 +10,78 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
fn task2_simple_bipush() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestBipush1.ijvm").unwrap();
steps(&mut machine, 1);
assert_eq!(machine.cur_stack().top(), Ok(42));
assert_eq!(machine.get_tos(), Ok(42));
}
#[test]
fn task2_signed_bipush() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestBipush2.ijvm").unwrap();
steps(&mut machine, 1);
assert_eq!(machine.cur_stack().top(), Ok(-42));
assert_eq!(machine.get_tos(), Ok(-42));
}
#[test]
fn task2_simple_iadd() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIadd1.ijvm").unwrap();
steps(&mut machine, 3);
assert_eq!(machine.cur_stack().top(), Ok(60));
assert_eq!(machine.get_tos(), Ok(60));
}
#[test]
fn task2_signed_iadd() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIadd2.ijvm").unwrap();
steps(&mut machine, 3);
assert_eq!(machine.cur_stack().top(), Ok(-60));
assert_eq!(machine.get_tos(), Ok(-60));
}
#[test]
fn task2_simple_isub() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIsub1.ijvm").unwrap();
steps(&mut machine, 3);
assert_eq!(machine.cur_stack().top(), Ok(-10));
assert_eq!(machine.get_tos(), Ok(-10));
}
#[test]
fn task2_signed_isub() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIsub2.ijvm").unwrap();
steps(&mut machine, 3);
assert_eq!(machine.cur_stack().top(), Ok(10));
assert_eq!(machine.get_tos(), Ok(10));
}
#[test]
fn task2_simple_iand() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIAND1.ijvm").unwrap();
steps(&mut machine, 5);
assert_eq!(machine.cur_stack().top(), Ok(1));
assert_eq!(machine.get_tos(), Ok(1));
}
#[test]
fn task2_simple_ior() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIOR1.ijvm").unwrap();
steps(&mut machine, 5);
assert_eq!(machine.cur_stack().top(), Ok(127));
assert_eq!(machine.get_tos(), Ok(127));
}
#[test]
fn task2_swap() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestSwap1.ijvm").unwrap();
steps(&mut machine, 1);
assert_eq!(machine.cur_stack().top(), Ok(10));
assert_eq!(machine.get_tos(), Ok(10));
steps(&mut machine, 1);
assert_eq!(machine.cur_stack().top(), Ok(20));
assert_eq!(machine.get_tos(), Ok(20));
steps(&mut machine, 1);
assert_eq!(machine.cur_stack().top(), Ok(10));
assert_eq!(machine.get_tos(), Ok(10));
steps(&mut machine, 1);
assert_eq!(machine.cur_stack().top(), Ok(20));
assert_eq!(machine.get_tos(), Ok(20));
}
#[test]
fn task2_simple_stack_operations() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestPop1.ijvm").unwrap();
steps(&mut machine, 3);
assert_eq!(machine.cur_stack().top(), Ok(10));
assert_eq!(machine.get_tos(), Ok(10));
steps(&mut machine, 3);
assert_eq!(machine.cur_stack().top(), Ok(50));
assert_eq!(machine.get_tos(), Ok(50));
steps(&mut machine, 1);
assert_eq!(machine.cur_stack().top(), Ok(10));
assert_eq!(machine.get_tos(), Ok(10));
}