Upgrade to edition 2021
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "rustijvm"
|
name = "rustijvm"
|
||||||
version = "1.1.0"
|
version = "1.1.0"
|
||||||
|
edition = "2021"
|
||||||
authors = ["Jur van den Berg <Jurl.berg@gmail.com>"]
|
authors = ["Jur van den Berg <Jurl.berg@gmail.com>"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ use test::Bencher;
|
|||||||
fn run_bfi(file: &str) {
|
fn run_bfi(file: &str) {
|
||||||
let file = File::open(file).expect("Missing bf file");
|
let file = File::open(file).expect("Missing bf file");
|
||||||
let rc = Arc::new(Mutex::new(Cursor::new(Vec::new())));
|
let rc = Arc::new(Mutex::new(Cursor::new(Vec::new())));
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/bonus/bfi.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/bonus/bfi.ijvm").unwrap();
|
||||||
machine.set_output(rc);
|
machine.set_output(rc);
|
||||||
machine.set_input(Box::new(file));
|
machine.set_input(Box::new(file));
|
||||||
machine.run().unwrap();
|
machine.run().unwrap();
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ use test::Bencher;
|
|||||||
|
|
||||||
fn run_calc(input: &'static str) {
|
fn run_calc(input: &'static str) {
|
||||||
let rc = Arc::new(Mutex::new(Cursor::new(Vec::new())));
|
let rc = Arc::new(Mutex::new(Cursor::new(Vec::new())));
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/advanced/SimpleCalc.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/advanced/SimpleCalc.ijvm").unwrap();
|
||||||
machine.set_output(rc);
|
machine.set_output(rc);
|
||||||
machine.set_input(Box::new(input.as_bytes()));
|
machine.set_input(Box::new(input.as_bytes()));
|
||||||
machine.run().unwrap();
|
machine.run().unwrap();
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
extern crate rustijvm;
|
extern crate rustijvm;
|
||||||
|
|
||||||
use rustijvm::Disassembly;
|
use rustijvm::disassembler::Disassembly;
|
||||||
use std::env;
|
use std::env;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use block::Block;
|
use crate::block::Block;
|
||||||
use ops::{num_to_op, Operation};
|
use crate::ops::{num_to_op, Operation};
|
||||||
use Result;
|
use crate::Result;
|
||||||
|
|
||||||
pub trait BinReadable {
|
pub trait BinReadable {
|
||||||
fn get(&mut self) -> Result<u8>;
|
fn get(&mut self) -> Result<u8>;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use std::ops;
|
use std::ops;
|
||||||
|
|
||||||
use Result;
|
use crate::Result;
|
||||||
use binread::BinReadable;
|
use crate::binread::BinReadable;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct Block {
|
pub struct Block {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
use binread::{BinRead, BinReadable};
|
use crate::binread::{BinRead, BinReadable};
|
||||||
use block::Block;
|
use crate::block::Block;
|
||||||
use ijvmreader::IJVMReader;
|
use crate::ijvmreader::IJVMReader;
|
||||||
use machine::MAGIC_HEADER;
|
use crate::machine::MAGIC_HEADER;
|
||||||
use ops;
|
use crate::ops;
|
||||||
use Result;
|
use crate::Result;
|
||||||
|
|
||||||
use std::clone::Clone;
|
use std::clone::Clone;
|
||||||
use std::collections::{HashMap, HashSet};
|
use std::collections::{HashMap, HashSet};
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use stack::Stack;
|
use crate::stack::Stack;
|
||||||
use Result;
|
use crate::Result;
|
||||||
use value::Value;
|
use crate::value::Value;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct Frame {
|
pub struct Frame {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use value::Value;
|
use crate::value::Value;
|
||||||
use std::rc::{Rc, Weak};
|
use std::rc::{Rc, Weak};
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use Result;
|
use crate::Result;
|
||||||
use binread::BinReadable;
|
use crate::binread::BinReadable;
|
||||||
|
|
||||||
pub struct IJVMReader {
|
pub struct IJVMReader {
|
||||||
pointer: usize,
|
pointer: usize,
|
||||||
|
|||||||
@@ -22,7 +22,4 @@ pub mod heap;
|
|||||||
type Result<T> = ::std::result::Result<T, &'static str>;
|
type Result<T> = ::std::result::Result<T, &'static str>;
|
||||||
|
|
||||||
pub mod machine;
|
pub mod machine;
|
||||||
pub use machine::Machine;
|
|
||||||
|
|
||||||
pub mod disassembler;
|
pub mod disassembler;
|
||||||
pub use disassembler::{Disassembler, Disassembly};
|
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
use std::io::{Read, Write};
|
use std::io::{Read, Write};
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
|
|
||||||
use binread::{BinRead, BinReadable};
|
use crate::binread::{BinRead, BinReadable};
|
||||||
use block::Block;
|
use crate::block::Block;
|
||||||
use frame::Frame;
|
use crate::frame::Frame;
|
||||||
use ijvmreader::IJVMReader;
|
use crate::ijvmreader::IJVMReader;
|
||||||
use ops::{num_to_op, Args, Operation};
|
use crate::ops::{num_to_op, Args, Operation};
|
||||||
use pool::Pool;
|
use crate::pool::Pool;
|
||||||
use stack::Stack;
|
use crate::stack::Stack;
|
||||||
use Result;
|
use crate::Result;
|
||||||
|
|
||||||
#[cfg(feature = "bonus.heap")]
|
#[cfg(feature = "bonus.heap")]
|
||||||
use heap::Heaps;
|
use crate::heap::Heaps;
|
||||||
#[cfg(feature = "bonus.network")]
|
#[cfg(feature = "bonus.network")]
|
||||||
use netstack::NetStack;
|
use crate::netstack::NetStack;
|
||||||
use std::convert::TryInto;
|
use std::convert::TryInto;
|
||||||
|
|
||||||
pub const MAGIC_HEADER: u32 = 0x1DEA_DFAD;
|
pub const MAGIC_HEADER: u32 = 0x1DEA_DFAD;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use std::net::TcpStream;
|
use std::net::TcpStream;
|
||||||
|
|
||||||
use Result;
|
use crate::Result;
|
||||||
use std::io::{Read, Write};
|
use std::io::{Read, Write};
|
||||||
use std::net::TcpListener;
|
use std::net::TcpListener;
|
||||||
|
|
||||||
|
|||||||
12
src/ops.rs
12
src/ops.rs
@@ -1,12 +1,12 @@
|
|||||||
use binread::BinRead;
|
use crate::binread::BinRead;
|
||||||
use frame::Frame;
|
use crate::frame::Frame;
|
||||||
use machine::Machine;
|
use crate::machine::Machine;
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
use std::num::Wrapping;
|
use std::num::Wrapping;
|
||||||
use Result;
|
use crate::Result;
|
||||||
use value::Value;
|
use crate::value::Value;
|
||||||
use std::convert::TryInto;
|
use std::convert::TryInto;
|
||||||
use netstack::NetStack;
|
use crate::netstack::NetStack;
|
||||||
|
|
||||||
pub type OpFunc = fn(&mut Machine) -> Result<()>;
|
pub type OpFunc = fn(&mut Machine) -> Result<()>;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use Result;
|
use crate::Result;
|
||||||
use block::Block;
|
use crate::block::Block;
|
||||||
use binread::{BinRead, BinReadable};
|
use crate::binread::{BinRead, BinReadable};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct Pool {
|
pub struct Pool {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use Result;
|
use crate::Result;
|
||||||
use value::Value;
|
use crate::value::Value;
|
||||||
|
|
||||||
|
|
||||||
#[derive(Debug, Default)]
|
#[derive(Debug, Default)]
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use Result;
|
use crate::Result;
|
||||||
use std::convert::TryInto;
|
use std::convert::TryInto;
|
||||||
use heap::Heap;
|
use crate::heap::Heap;
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq)]
|
#[derive(Debug, Clone, PartialEq)]
|
||||||
pub enum Value {
|
pub enum Value {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ extern crate rustijvm;
|
|||||||
|
|
||||||
use std::io::{Seek, SeekFrom, Read};
|
use std::io::{Seek, SeekFrom, Read};
|
||||||
|
|
||||||
fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
fn steps(machine: &mut rustijvm::machine::Machine, num: usize) {
|
||||||
for _ in 0..num {
|
for _ in 0..num {
|
||||||
machine.step().unwrap();
|
machine.step().unwrap();
|
||||||
}
|
}
|
||||||
@@ -12,7 +12,7 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
|||||||
fn advanced1() {
|
fn advanced1() {
|
||||||
let output = rustijvm::stubs::output_stub();
|
let output = rustijvm::stubs::output_stub();
|
||||||
let input = Box::new("A".as_bytes());
|
let input = Box::new("A".as_bytes());
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task5/all_regular.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task5/all_regular.ijvm").unwrap();
|
||||||
machine.set_input(input);
|
machine.set_input(input);
|
||||||
machine.set_output(output.clone());
|
machine.set_output(output.clone());
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
extern crate rustijvm;
|
extern crate rustijvm;
|
||||||
|
|
||||||
fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
fn steps(machine: &mut rustijvm::machine::Machine, num: usize) {
|
||||||
for _ in 0..num {
|
for _ in 0..num {
|
||||||
machine.step().unwrap();
|
machine.step().unwrap();
|
||||||
}
|
}
|
||||||
@@ -8,7 +8,7 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn advanced2_nested_invoke_simple() {
|
fn advanced2_nested_invoke_simple() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/advanced/test-nestedinvoke-simple.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/advanced/test-nestedinvoke-simple.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 1);
|
steps(&mut machine, 1);
|
||||||
@@ -35,7 +35,7 @@ fn advanced2_nested_invoke_simple() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn advanced2_nested_invoke() {
|
fn advanced2_nested_invoke() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/advanced/test-nestedinvoke.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/advanced/test-nestedinvoke.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 8);
|
steps(&mut machine, 8);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
extern crate rustijvm;
|
extern crate rustijvm;
|
||||||
|
|
||||||
fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
fn steps(machine: &mut rustijvm::machine::Machine, num: usize) {
|
||||||
for _ in 0..num {
|
for _ in 0..num {
|
||||||
machine.step().unwrap();
|
machine.step().unwrap();
|
||||||
}
|
}
|
||||||
@@ -10,7 +10,7 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
|||||||
fn advanced3_wide1() {
|
fn advanced3_wide1() {
|
||||||
use rustijvm::value::Value::Int;
|
use rustijvm::value::Value::Int;
|
||||||
|
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/advanced/test-wide1.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/advanced/test-wide1.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 6);
|
steps(&mut machine, 6);
|
||||||
@@ -27,7 +27,7 @@ fn advanced3_wide1() {
|
|||||||
#[test]
|
#[test]
|
||||||
fn advanced3_wide2() {
|
fn advanced3_wide2() {
|
||||||
use rustijvm::value::Value::Int;
|
use rustijvm::value::Value::Int;
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/advanced/test-wide2.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/advanced/test-wide2.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 6);
|
steps(&mut machine, 6);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use std::io::{Seek, SeekFrom, Read};
|
|||||||
#[test]
|
#[test]
|
||||||
fn advanced4_tanenbaum() {
|
fn advanced4_tanenbaum() {
|
||||||
let rc = rustijvm::stubs::output_stub();
|
let rc = rustijvm::stubs::output_stub();
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/advanced/Tanenbaum.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/advanced/Tanenbaum.ijvm").unwrap();
|
||||||
|
|
||||||
machine.set_output(rc.clone());
|
machine.set_output(rc.clone());
|
||||||
machine.run().unwrap();
|
machine.run().unwrap();
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use std::io::{Seek, SeekFrom, Read};
|
|||||||
|
|
||||||
fn run_calc(input: &'static str, expected: &str) {
|
fn run_calc(input: &'static str, expected: &str) {
|
||||||
let rc = rustijvm::stubs::output_stub();
|
let rc = rustijvm::stubs::output_stub();
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/advanced/SimpleCalc.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/advanced/SimpleCalc.ijvm").unwrap();
|
||||||
|
|
||||||
machine.set_input(Box::new(input.as_bytes()));
|
machine.set_input(Box::new(input.as_bytes()));
|
||||||
machine.set_output(rc.clone());
|
machine.set_output(rc.clone());
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use std::io::{Seek, SeekFrom, Read};
|
|||||||
|
|
||||||
fn run_calc(input: &'static str, expected: &str) {
|
fn run_calc(input: &'static str, expected: &str) {
|
||||||
let rc = rustijvm::stubs::output_stub();
|
let rc = rustijvm::stubs::output_stub();
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/advanced/SimpleCalc.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/advanced/SimpleCalc.ijvm").unwrap();
|
||||||
|
|
||||||
machine.set_input(Box::new(input.as_bytes()));
|
machine.set_input(Box::new(input.as_bytes()));
|
||||||
machine.set_output(rc.clone());
|
machine.set_output(rc.clone());
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use std::io::{SeekFrom, Seek, Read};
|
|||||||
#[ignore]
|
#[ignore]
|
||||||
fn advanced7() {
|
fn advanced7() {
|
||||||
let output = rustijvm::stubs::output_stub();
|
let output = rustijvm::stubs::output_stub();
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/advanced/mandelbread.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/advanced/mandelbread.ijvm").unwrap();
|
||||||
machine.set_output(output.clone());
|
machine.set_output(output.clone());
|
||||||
machine.run().unwrap();
|
machine.run().unwrap();
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ extern crate rustijvm;
|
|||||||
|
|
||||||
use std::convert::TryInto;
|
use std::convert::TryInto;
|
||||||
|
|
||||||
fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
fn steps(machine: &mut rustijvm::machine::Machine, num: usize) {
|
||||||
for _ in 0..num {
|
for _ in 0..num {
|
||||||
machine.step().unwrap();
|
machine.step().unwrap();
|
||||||
}
|
}
|
||||||
@@ -10,7 +10,7 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn advancedstack_100() {
|
fn advancedstack_100() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/advanced/teststack.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/advanced/teststack.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 1);
|
steps(&mut machine, 1);
|
||||||
@@ -20,7 +20,7 @@ fn advancedstack_100() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn advancedstack_3000() {
|
fn advancedstack_3000() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/advanced/teststack.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/advanced/teststack.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 1);
|
steps(&mut machine, 1);
|
||||||
@@ -30,7 +30,7 @@ fn advancedstack_3000() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn advancedstack_50000() {
|
fn advancedstack_50000() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/advanced/teststack.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/advanced/teststack.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 1);
|
steps(&mut machine, 1);
|
||||||
@@ -40,7 +40,7 @@ fn advancedstack_50000() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn advancedstack_contents() {
|
fn advancedstack_contents() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/advanced/teststack.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/advanced/teststack.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 1);
|
steps(&mut machine, 1);
|
||||||
@@ -58,7 +58,7 @@ fn advancedstack_contents() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn advancedstack_method() {
|
fn advancedstack_method() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/advanced/teststack2.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/advanced/teststack2.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 8);
|
steps(&mut machine, 8);
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use std::io::{Seek, SeekFrom, Read};
|
|||||||
fn run_bfi(file: &str) -> String {
|
fn run_bfi(file: &str) -> String {
|
||||||
let file = File::open(file).expect("Missing bf file");
|
let file = File::open(file).expect("Missing bf file");
|
||||||
let rc = rustijvm::stubs::output_stub();
|
let rc = rustijvm::stubs::output_stub();
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/bonus/bfi.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/bonus/bfi.ijvm").unwrap();
|
||||||
machine.set_output(rc.clone());
|
machine.set_output(rc.clone());
|
||||||
machine.set_input(Box::new(file));
|
machine.set_input(Box::new(file));
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ fn test_create_from_slice() {
|
|||||||
let mut vec = Vec::<u8>::new();
|
let mut vec = Vec::<u8>::new();
|
||||||
File::open("files/task1/program1.ijvm").unwrap().read_to_end(&mut vec).unwrap();
|
File::open("files/task1/program1.ijvm").unwrap().read_to_end(&mut vec).unwrap();
|
||||||
|
|
||||||
let machine = rustijvm::Machine::new_from_slice(&vec).unwrap();
|
let machine = rustijvm::machine::Machine::new_from_slice(&vec).unwrap();
|
||||||
|
|
||||||
assert_eq!(machine.block.len(), 7);
|
assert_eq!(machine.block.len(), 7);
|
||||||
assert_eq!(machine.block[0], 0x10); // BIPUSH
|
assert_eq!(machine.block[0], 0x10); // BIPUSH
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use rustijvm::binread::BinReadable;
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task1_program1() {
|
fn task1_program1() {
|
||||||
let machine = rustijvm::Machine::new_from_file("files/task1/program1.ijvm").unwrap();
|
let machine = rustijvm::machine::Machine::new_from_file("files/task1/program1.ijvm").unwrap();
|
||||||
|
|
||||||
assert_eq!(machine.block.len(), 7);
|
assert_eq!(machine.block.len(), 7);
|
||||||
assert_eq!(machine.block[0], 0x10); // BIPUSH
|
assert_eq!(machine.block[0], 0x10); // BIPUSH
|
||||||
@@ -15,7 +15,7 @@ fn task1_program1() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task1_program2() {
|
fn task1_program2() {
|
||||||
let machine = rustijvm::Machine::new_from_file("files/task1/program2.ijvm").unwrap();
|
let machine = rustijvm::machine::Machine::new_from_file("files/task1/program2.ijvm").unwrap();
|
||||||
|
|
||||||
assert_eq!(machine.block.len(), 16);
|
assert_eq!(machine.block.len(), 16);
|
||||||
assert_eq!(machine.block[0], 0x0);
|
assert_eq!(machine.block[0], 0x0);
|
||||||
@@ -31,7 +31,7 @@ fn task1_program2() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task1_program_counter() {
|
fn task1_program_counter() {
|
||||||
let machine = rustijvm::Machine::new_from_file("files/task1/program1.ijvm").unwrap();
|
let machine = rustijvm::machine::Machine::new_from_file("files/task1/program1.ijvm").unwrap();
|
||||||
|
|
||||||
assert_eq!(machine.get_program_counter(), 0);
|
assert_eq!(machine.get_program_counter(), 0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
extern crate rustijvm;
|
extern crate rustijvm;
|
||||||
|
|
||||||
fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
fn steps(machine: &mut rustijvm::machine::Machine, num: usize) {
|
||||||
for _ in 0..num {
|
for _ in 0..num {
|
||||||
machine.step().unwrap();
|
machine.step().unwrap();
|
||||||
}
|
}
|
||||||
@@ -8,7 +8,7 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task2_simple_bipush() {
|
fn task2_simple_bipush() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestBipush1.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task2/TestBipush1.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 1);
|
steps(&mut machine, 1);
|
||||||
@@ -17,7 +17,7 @@ fn task2_simple_bipush() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task2_signed_bipush() {
|
fn task2_signed_bipush() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestBipush2.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task2/TestBipush2.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 1);
|
steps(&mut machine, 1);
|
||||||
@@ -26,7 +26,7 @@ fn task2_signed_bipush() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task2_simple_iadd() {
|
fn task2_simple_iadd() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIadd1.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task2/TestIadd1.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 3);
|
steps(&mut machine, 3);
|
||||||
@@ -35,7 +35,7 @@ fn task2_simple_iadd() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task2_signed_iadd() {
|
fn task2_signed_iadd() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIadd2.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task2/TestIadd2.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 3);
|
steps(&mut machine, 3);
|
||||||
@@ -44,7 +44,7 @@ fn task2_signed_iadd() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task2_simple_isub() {
|
fn task2_simple_isub() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIsub1.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task2/TestIsub1.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 3);
|
steps(&mut machine, 3);
|
||||||
@@ -53,7 +53,7 @@ fn task2_simple_isub() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task2_signed_isub() {
|
fn task2_signed_isub() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIsub2.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task2/TestIsub2.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 3);
|
steps(&mut machine, 3);
|
||||||
@@ -62,7 +62,7 @@ fn task2_signed_isub() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task2_simple_iand() {
|
fn task2_simple_iand() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIAND1.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task2/TestIAND1.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 5);
|
steps(&mut machine, 5);
|
||||||
@@ -71,7 +71,7 @@ fn task2_simple_iand() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task2_simple_ior() {
|
fn task2_simple_ior() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestIOR1.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task2/TestIOR1.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 5);
|
steps(&mut machine, 5);
|
||||||
@@ -80,7 +80,7 @@ fn task2_simple_ior() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task2_swap() {
|
fn task2_swap() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestSwap1.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task2/TestSwap1.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 1);
|
steps(&mut machine, 1);
|
||||||
@@ -95,7 +95,7 @@ fn task2_swap() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task2_simple_stack_operations() {
|
fn task2_simple_stack_operations() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task2/TestPop1.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task2/TestPop1.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 3);
|
steps(&mut machine, 3);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
extern crate rustijvm;
|
extern crate rustijvm;
|
||||||
|
|
||||||
fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
fn steps(machine: &mut rustijvm::machine::Machine, num: usize) {
|
||||||
for _ in 0..num {
|
for _ in 0..num {
|
||||||
machine.step().unwrap();
|
machine.step().unwrap();
|
||||||
}
|
}
|
||||||
@@ -8,7 +8,7 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task3_goto1() {
|
fn task3_goto1() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task3/GOTO1.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task3/GOTO1.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 1);
|
steps(&mut machine, 1);
|
||||||
@@ -20,7 +20,7 @@ fn task3_goto1() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task3_goto2() {
|
fn task3_goto2() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task3/GOTO2.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task3/GOTO2.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 1);
|
steps(&mut machine, 1);
|
||||||
@@ -34,7 +34,7 @@ fn task3_goto2() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task3_ifeq1() {
|
fn task3_ifeq1() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task3/IFEQ1.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task3/IFEQ1.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 1);
|
steps(&mut machine, 1);
|
||||||
@@ -73,7 +73,7 @@ fn task3_ifeq1() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task3_iflt1() {
|
fn task3_iflt1() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task3/IFLT1.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task3/IFLT1.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
let mut pc = 0;
|
let mut pc = 0;
|
||||||
@@ -102,7 +102,7 @@ fn task3_iflt1() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task3_ificmpeq1() {
|
fn task3_ificmpeq1() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task3/IFICMPEQ1.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task3/IFICMPEQ1.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
let mut pc = 0;
|
let mut pc = 0;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ extern crate rustijvm;
|
|||||||
|
|
||||||
use std::io::{Read, Seek, SeekFrom};
|
use std::io::{Read, Seek, SeekFrom};
|
||||||
|
|
||||||
fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
fn steps(machine: &mut rustijvm::machine::Machine, num: usize) {
|
||||||
for _ in 0..num {
|
for _ in 0..num {
|
||||||
machine.step().unwrap();
|
machine.step().unwrap();
|
||||||
}
|
}
|
||||||
@@ -10,7 +10,7 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task4_ldcw1() {
|
fn task4_ldcw1() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task4/LoadTest1.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task4/LoadTest1.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 1);
|
steps(&mut machine, 1);
|
||||||
@@ -23,7 +23,7 @@ fn task4_ldcw1() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task4_simple_load() {
|
fn task4_simple_load() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task4/LoadTest3.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task4/LoadTest3.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 1);
|
steps(&mut machine, 1);
|
||||||
@@ -52,7 +52,7 @@ fn task4_simple_load() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task4_complex_load() {
|
fn task4_complex_load() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task4/LoadTest2.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task4/LoadTest2.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 1);
|
steps(&mut machine, 1);
|
||||||
@@ -87,7 +87,7 @@ fn task4_complex_load() {
|
|||||||
fn task4_iteration_load() {
|
fn task4_iteration_load() {
|
||||||
let rc = rustijvm::stubs::output_stub();
|
let rc = rustijvm::stubs::output_stub();
|
||||||
|
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task4/LoadTest4.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task4/LoadTest4.ijvm").unwrap();
|
||||||
machine.set_output(rc.clone());
|
machine.set_output(rc.clone());
|
||||||
machine.run().unwrap();
|
machine.run().unwrap();
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ fn task4_iteration_load() {
|
|||||||
#[test]
|
#[test]
|
||||||
fn task4_iinc() {
|
fn task4_iinc() {
|
||||||
use rustijvm::value::Value::Int;
|
use rustijvm::value::Value::Int;
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task4/IINCTest.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task4/IINCTest.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 4);
|
steps(&mut machine, 4);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
extern crate rustijvm;
|
extern crate rustijvm;
|
||||||
fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
fn steps(machine: &mut rustijvm::machine::Machine, num: usize) {
|
||||||
for _ in 0..num {
|
for _ in 0..num {
|
||||||
machine.step().unwrap();
|
machine.step().unwrap();
|
||||||
}
|
}
|
||||||
@@ -7,7 +7,7 @@ fn steps(machine: &mut rustijvm::Machine, num: usize) {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task5_invokenoargs() {
|
fn task5_invokenoargs() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task5/TestInvokeNoArgs.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task5/TestInvokeNoArgs.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 2);
|
steps(&mut machine, 2);
|
||||||
@@ -20,7 +20,7 @@ fn task5_invokenoargs() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task5_invoke1() {
|
fn task5_invoke1() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task5/test-invokevirtual1.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task5/test-invokevirtual1.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 3);
|
steps(&mut machine, 3);
|
||||||
@@ -34,7 +34,7 @@ fn task5_invoke1() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task5_ireturn1() {
|
fn task5_ireturn1() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task5/test-invokevirtual1.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task5/test-invokevirtual1.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 6);
|
steps(&mut machine, 6);
|
||||||
@@ -45,7 +45,7 @@ fn task5_ireturn1() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task5_invoke2() {
|
fn task5_invoke2() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task5/test-invokevirtual2.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task5/test-invokevirtual2.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 5);
|
steps(&mut machine, 5);
|
||||||
@@ -61,7 +61,7 @@ fn task5_invoke2() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn task5_ireturn2() {
|
fn task5_ireturn2() {
|
||||||
let mut machine = rustijvm::Machine::new_from_file("files/task5/test-invokevirtual2.ijvm").unwrap();
|
let mut machine = rustijvm::machine::Machine::new_from_file("files/task5/test-invokevirtual2.ijvm").unwrap();
|
||||||
machine.set_output(rustijvm::stubs::output_stub());
|
machine.set_output(rustijvm::stubs::output_stub());
|
||||||
|
|
||||||
steps(&mut machine, 10);
|
steps(&mut machine, 10);
|
||||||
|
|||||||
Reference in New Issue
Block a user