Make all tests not output anything

This commit is contained in:
2019-05-29 15:57:20 +02:00
parent a79d5b8aac
commit 03eb6d685b
16 changed files with 78 additions and 6 deletions

View File

@@ -11,6 +11,7 @@ pub mod ops;
pub mod stack;
pub mod pool;
pub mod frame;
pub mod stubs;
#[cfg(feature = "bonus:network")]
pub mod netstack;

6
src/stubs.rs Normal file
View File

@@ -0,0 +1,6 @@
use std::sync::{Arc, Mutex};
use std::io::Cursor;
pub fn output_stub() -> Arc<Mutex<Cursor<Vec<u8>>>> {
Arc::new(Mutex::new(Cursor::new(Vec::new())))
}

View File

@@ -11,7 +11,7 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
#[test]
fn advanced1() {
let output: Arc<Mutex<Cursor<Vec<u8>>>> = Arc::new(Mutex::new(Cursor::new(Vec::new())));
let output = rustijvm::stubs::output_stub();
let input = Box::new("A".as_bytes());
let mut machine = rustijvm::Machine::new_from_file("files/task5/all_regular.ijvm").unwrap();
machine.set_input(input);

View File

@@ -9,6 +9,7 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
#[test]
fn advanced2_nested_invoke_simple() {
let mut machine = rustijvm::Machine::new_from_file("files/advanced/test-nestedinvoke-simple.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 1);
let pc_main = machine.get_program_counter() + 3;
@@ -35,6 +36,7 @@ fn advanced2_nested_invoke_simple() {
#[test]
fn advanced2_nested_invoke() {
let mut machine = rustijvm::Machine::new_from_file("files/advanced/test-nestedinvoke.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 8);
assert_eq!(machine.get_tos(), Ok(0x6));

View File

@@ -11,6 +11,8 @@ fn advanced3_wide1() {
use rustijvm::value::Value::Int;
let mut machine = rustijvm::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);
@@ -26,6 +28,7 @@ fn advanced3_wide1() {
fn advanced3_wide2() {
use rustijvm::value::Value::Int;
let mut machine = rustijvm::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)));

View File

@@ -5,8 +5,9 @@ use std::io::{Cursor, Seek, SeekFrom, Read};
#[test]
fn advanced4_tanenbaum() {
let rc = Arc::new(Mutex::new(Cursor::new(Vec::new())));
let rc = rustijvm::stubs::output_stub();
let mut machine = rustijvm::Machine::new_from_file("files/advanced/Tanenbaum.ijvm").unwrap();
machine.set_output(rc.clone());
machine.run().unwrap();

View File

@@ -4,8 +4,9 @@ use std::sync::{Arc, Mutex};
use std::io::{Cursor, Seek, SeekFrom, Read};
fn run_calc(input: &'static str, expected: &str) {
let rc = Arc::new(Mutex::new(Cursor::new(Vec::new())));
let rc = rustijvm::stubs::output_stub();
let mut machine = rustijvm::Machine::new_from_file("files/advanced/SimpleCalc.ijvm").unwrap();
machine.set_input(Box::new(input.as_bytes()));
machine.set_output(rc.clone());
machine.run().unwrap();
@@ -38,3 +39,8 @@ fn advanced5_level3() {
run_calc("1 1 + 1 1 + 1 1 + 1 1 + 1 1 + +-++?.", "2\n");
run_calc("9 8 -9 7-9 6-9 5-9 4-9 3-9 2-9 1-9 0- -+-+-+-+?.", "1\n");
}
#[test]
fn advanced5_level4() {
run_calc("2 2 2 2 2 2 2 2 2 2 2 2 2 ************ +?.", "8192\n");
}

View File

@@ -4,8 +4,9 @@ use std::sync::{Arc, Mutex};
use std::io::{Cursor, Seek, SeekFrom, Read};
fn run_calc(input: &'static str, expected: &str) {
let rc = Arc::new(Mutex::new(Cursor::new(Vec::new())));
let rc = rustijvm::stubs::output_stub();
let mut machine = rustijvm::Machine::new_from_file("files/advanced/SimpleCalc.ijvm").unwrap();
machine.set_input(Box::new(input.as_bytes()));
machine.set_output(rc.clone());
machine.run().unwrap();
@@ -33,3 +34,8 @@ fn advanced6_recurse2() {
fn advanced6_recurse3() {
run_calc("8!?.", "40320\n");
}
#[test]
fn advanced6_recurse4() {
run_calc("5!5+?.", "125\n");
}

View File

@@ -11,6 +11,7 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
#[test]
fn advancedstack_100() {
let mut machine = rustijvm::Machine::new_from_file("files/advanced/teststack.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 1);
steps(&mut machine, 2 * 100);
@@ -20,6 +21,7 @@ fn advancedstack_100() {
#[test]
fn advancedstack_3000() {
let mut machine = rustijvm::Machine::new_from_file("files/advanced/teststack.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 1);
steps(&mut machine, 2 * 3000);
@@ -29,6 +31,7 @@ fn advancedstack_3000() {
#[test]
fn advancedstack_50000() {
let mut machine = rustijvm::Machine::new_from_file("files/advanced/teststack.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 1);
steps(&mut machine, 2 * 50000);
@@ -38,6 +41,7 @@ fn advancedstack_50000() {
#[test]
fn advancedstack_contents() {
let mut machine = rustijvm::Machine::new_from_file("files/advanced/teststack.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 1);
steps(&mut machine, 2 * 100);
@@ -55,6 +59,7 @@ fn advancedstack_contents() {
#[test]
fn advancedstack_method() {
let mut machine = rustijvm::Machine::new_from_file("files/advanced/teststack2.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 8);
{

View File

@@ -6,7 +6,7 @@ use std::io::{Cursor, Seek, SeekFrom, Read};
fn run_bfi(file: &str) -> String {
let file = File::open(file).expect("Missing bf file");
let rc = Arc::new(Mutex::new(Cursor::new(Vec::new())));
let rc = rustijvm::stubs::output_stub();
let mut machine = rustijvm::Machine::new_from_file("files/bonus/bfi.ijvm").unwrap();
machine.set_output(rc.clone());
machine.set_input(Box::new(file));

View File

@@ -10,6 +10,7 @@ fn test_create_from_slice() {
File::open("files/task1/program1.ijvm").unwrap().read_to_end(&mut vec).unwrap();
let machine = rustijvm::Machine::new_from_slice(&vec).unwrap();
assert_eq!(machine.block.len(), 7);
assert_eq!(machine.block[0], 0x10); // BIPUSH
assert_eq!(machine.block[2], 0x10); // BIPUSH

View File

@@ -5,6 +5,7 @@ use rustijvm::binread::BinReadable;
#[test]
fn task1_program1() {
let machine = rustijvm::Machine::new_from_file("files/task1/program1.ijvm").unwrap();
assert_eq!(machine.block.len(), 7);
assert_eq!(machine.block[0], 0x10); // BIPUSH
assert_eq!(machine.block[2], 0x10); // BIPUSH
@@ -15,6 +16,7 @@ fn task1_program1() {
#[test]
fn task1_program2() {
let machine = rustijvm::Machine::new_from_file("files/task1/program2.ijvm").unwrap();
assert_eq!(machine.block.len(), 16);
assert_eq!(machine.block[0], 0x0);
assert_eq!(machine.block[1], 0x13);
@@ -30,5 +32,6 @@ fn task1_program2() {
#[test]
fn task1_program_counter() {
let machine = rustijvm::Machine::new_from_file("files/task1/program1.ijvm").unwrap();
assert_eq!(machine.get_program_counter(), 0);
}

View File

@@ -9,6 +9,8 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
#[test]
fn task2_simple_bipush() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestBipush1.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 1);
assert_eq!(machine.get_tos(), Ok(42));
}
@@ -16,6 +18,8 @@ fn task2_simple_bipush() {
#[test]
fn task2_signed_bipush() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestBipush2.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 1);
assert_eq!(machine.get_tos(), Ok(-42));
}
@@ -23,6 +27,8 @@ fn task2_signed_bipush() {
#[test]
fn task2_simple_iadd() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIadd1.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 3);
assert_eq!(machine.get_tos(), Ok(60));
}
@@ -30,6 +36,8 @@ fn task2_simple_iadd() {
#[test]
fn task2_signed_iadd() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIadd2.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 3);
assert_eq!(machine.get_tos(), Ok(-60));
}
@@ -37,6 +45,8 @@ fn task2_signed_iadd() {
#[test]
fn task2_simple_isub() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIsub1.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 3);
assert_eq!(machine.get_tos(), Ok(-10));
}
@@ -44,6 +54,8 @@ fn task2_simple_isub() {
#[test]
fn task2_signed_isub() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIsub2.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 3);
assert_eq!(machine.get_tos(), Ok(10));
}
@@ -51,6 +63,8 @@ fn task2_signed_isub() {
#[test]
fn task2_simple_iand() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIAND1.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 5);
assert_eq!(machine.get_tos(), Ok(1));
}
@@ -58,6 +72,8 @@ fn task2_simple_iand() {
#[test]
fn task2_simple_ior() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIOR1.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 5);
assert_eq!(machine.get_tos(), Ok(127));
}
@@ -65,6 +81,8 @@ fn task2_simple_ior() {
#[test]
fn task2_swap() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestSwap1.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 1);
assert_eq!(machine.get_tos(), Ok(10));
steps(&mut machine, 1);
@@ -78,6 +96,8 @@ fn task2_swap() {
#[test]
fn task2_simple_stack_operations() {
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestPop1.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 3);
assert_eq!(machine.get_tos(), Ok(10));
steps(&mut machine, 3);

View File

@@ -9,6 +9,8 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
#[test]
fn task3_goto1() {
let mut machine = rustijvm::Machine::new_from_file("files/task3/GOTO1.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 1);
assert_eq!(machine.get_tos(), Ok(0x31));
steps(&mut machine, 3);
@@ -19,6 +21,8 @@ fn task3_goto1() {
#[test]
fn task3_goto2() {
let mut machine = rustijvm::Machine::new_from_file("files/task3/GOTO2.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 1);
assert_eq!(machine.get_tos(), Ok(0x31));
steps(&mut machine, 3);
@@ -31,6 +35,7 @@ fn task3_goto2() {
#[test]
fn task3_ifeq1() {
let mut machine = rustijvm::Machine::new_from_file("files/task3/IFEQ1.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 1);
assert_eq!(machine.get_tos(), Ok(0x5));
@@ -69,6 +74,8 @@ fn task3_ifeq1() {
#[test]
fn task3_iflt1() {
let mut machine = rustijvm::Machine::new_from_file("files/task3/IFLT1.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
let mut pc = 0;
// L1
@@ -96,6 +103,8 @@ fn task3_iflt1() {
#[test]
fn task3_ificmpeq1() {
let mut machine = rustijvm::Machine::new_from_file("files/task3/IFICMPEQ1.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
let mut pc = 0;
// L1

View File

@@ -12,6 +12,7 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
#[test]
fn task4_ldcw1() {
let mut machine = rustijvm::Machine::new_from_file("files/task4/LoadTest1.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 1);
assert_eq!(machine.get_tos(), Ok(0x1));
@@ -24,6 +25,7 @@ fn task4_ldcw1() {
#[test]
fn task4_simple_load() {
let mut machine = rustijvm::Machine::new_from_file("files/task4/LoadTest3.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 1);
assert_eq!(machine.get_tos(), Ok(0x2a));
@@ -52,6 +54,7 @@ fn task4_simple_load() {
#[test]
fn task4_complex_load() {
let mut machine = rustijvm::Machine::new_from_file("files/task4/LoadTest2.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 1);
assert_eq!(machine.get_tos(), Ok(0x2a));
@@ -83,7 +86,7 @@ fn task4_complex_load() {
#[test]
fn task4_iteration_load() {
let rc = Arc::new(Mutex::new(Cursor::new(Vec::new())));
let rc = rustijvm::stubs::output_stub();
let mut machine = rustijvm::Machine::new_from_file("files/task4/LoadTest4.ijvm").unwrap();
machine.set_output(rc.clone());
@@ -102,6 +105,7 @@ fn task4_iteration_load() {
fn task4_iinc() {
use rustijvm::value::Value::Int;
let mut machine = rustijvm::Machine::new_from_file("files/task4/IINCTest.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 4);
assert_eq!(machine.cur_frame().get(0), Ok(&Int(0)));

View File

@@ -8,6 +8,7 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
#[test]
fn task5_invokenoargs() {
let mut machine = rustijvm::Machine::new_from_file("files/task5/TestInvokeNoArgs.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 2);
assert_eq!(machine.get_tos(), Ok(0x42));
@@ -20,6 +21,7 @@ fn task5_invokenoargs() {
#[test]
fn task5_invoke1() {
let mut machine = rustijvm::Machine::new_from_file("files/task5/test-invokevirtual1.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 3);
let pc = machine.get_program_counter();
@@ -33,6 +35,7 @@ fn task5_invoke1() {
#[test]
fn task5_ireturn1() {
let mut machine = rustijvm::Machine::new_from_file("files/task5/test-invokevirtual1.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 6);
assert_eq!(machine.get_tos(), Ok(0x1));
@@ -43,6 +46,7 @@ fn task5_ireturn1() {
#[test]
fn task5_invoke2() {
let mut machine = rustijvm::Machine::new_from_file("files/task5/test-invokevirtual2.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 5);
let pc = machine.get_program_counter();
@@ -58,6 +62,7 @@ fn task5_invoke2() {
#[test]
fn task5_ireturn2() {
let mut machine = rustijvm::Machine::new_from_file("files/task5/test-invokevirtual2.ijvm").unwrap();
machine.set_output(rustijvm::stubs::output_stub());
steps(&mut machine, 10);
assert_eq!(machine.get_tos(), Ok(0x5));