Files
RustIJVM/tests/advanced5.rs

46 lines
1.1 KiB
Rust

extern crate rustijvm;
use std::io::{Seek, SeekFrom, Read};
fn run_calc(input: &'static str, expected: &str) {
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();
let mut out = rc.lock().unwrap();
let mut output = String::new();
out.seek(SeekFrom::Start(0)).unwrap();
out.read_to_string(&mut output).unwrap();
assert_eq!(output, expected);
}
#[test]
fn advanced5_level1() {
run_calc("0 0 + ? .", "0\n");
run_calc("0 9 + ? .", "9\n");
run_calc("9 0 + ? .", "9\n");
run_calc("9 9 - ? .", "0\n");
}
#[test]
fn advanced5_level2() {
run_calc(" 5 4 -?.", "1\n");
run_calc(" 8 8 8 - + ?.", "8\n");
}
#[test]
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");
}