From 4a9e2e7d20dad3395e7ef2686cb207712afb6e1f Mon Sep 17 00:00:00 2001 From: Jur van den Berg Date: Wed, 23 May 2018 16:25:21 +0200 Subject: [PATCH] Rename from string to from slice and fuck utf8 --- src/ijvmreader.rs | 4 ++-- src/machine.rs | 4 ++-- tests/fromstring.rs | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 tests/fromstring.rs diff --git a/src/ijvmreader.rs b/src/ijvmreader.rs index 62bc800..39dc1b5 100644 --- a/src/ijvmreader.rs +++ b/src/ijvmreader.rs @@ -21,10 +21,10 @@ impl IJVMReader { }) } - pub fn new_from_string(source: String) -> IJVMReader { + pub fn new_from_slice(source: &[u8]) -> IJVMReader { IJVMReader { pointer: 0, - source: source.into_bytes(), + source: source.to_vec(), } } } diff --git a/src/machine.rs b/src/machine.rs index fd325f2..c236929 100644 --- a/src/machine.rs +++ b/src/machine.rs @@ -76,8 +76,8 @@ impl Machine { Machine::new_from_reader(reader) } - pub fn new_from_string(source: String) -> Result { - let reader = IJVMReader::new_from_string(source); + pub fn new_from_slice(source: &[u8]) -> Result { + let reader = IJVMReader::new_from_slice(source); Machine::new_from_reader(reader) } diff --git a/tests/fromstring.rs b/tests/fromstring.rs new file mode 100644 index 0000000..b9030fd --- /dev/null +++ b/tests/fromstring.rs @@ -0,0 +1,19 @@ +extern crate rustijvm; + +use rustijvm::binread::BinReadable; +use std::fs::File; +use std::io::Read; + +#[test] +fn test_create_from_slice() { + let mut vec = Vec::::new(); + 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 + assert_eq!(machine.block[4], 0x60); // IADD + assert_eq!(machine.block[5], 0xFD); // OUT +} +