Make all tests not output anything
This commit is contained in:
@@ -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
6
src/stubs.rs
Normal 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())))
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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)));
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
{
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)));
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user