Fixed machine tests not passing

This commit is contained in:
François Autin 2023-04-05 16:44:26 +02:00
parent df4fd53c96
commit cfb58fd6b3
No known key found for this signature in database
GPG Key ID: 343F5D382E1DD77C

View File

@ -221,7 +221,7 @@ impl Machine {
} }
} }
/// Execute the instructions table of a machine putted in param /// Execute the instructions table of a machine put in param
/// ///
/// ### Parameters /// ### Parameters
/// ///
@ -237,6 +237,19 @@ impl Machine {
} }
} }
/// Execute the instructions table of a machine put in param
/// **WITHOUT INTERPRETING SYSCALLS**
///
/// For debug purposes
pub fn _run_debug(&mut self, system: &mut System) {
loop {
match self.one_instruction(system) {
Ok(_) => (),
_ => break
}
}
}
/// Execute the current instruction /// Execute the current instruction
/// ///
/// ### Parameters /// ### Parameters
@ -694,10 +707,15 @@ impl Default for Machine {
} }
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use std::fs; use std::fs;
use crate::simulator::{machine::Machine, mem_cmp}; use crate::simulator::{machine::Machine, mem_cmp};
use crate::kernel::thread::Thread;
use crate::kernel::process::Process;
use std::rc::Rc;
use std::cell::RefCell;
macro_rules! get_full_path { macro_rules! get_full_path {
($prefix: expr, $test_name:expr) => {{ ($prefix: expr, $test_name:expr) => {{
@ -717,7 +735,7 @@ mod test {
let memory_after = mem_cmp::MemChecker::from(get_full_path!("memory", &end_file_name)).unwrap(); let memory_after = mem_cmp::MemChecker::from(get_full_path!("memory", &end_file_name)).unwrap();
mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m); mem_cmp::MemChecker::fill_memory_from_mem_checker(&memory_before, &mut m);
let mut system = crate::kernel::system::System::default(); let mut system = crate::kernel::system::System::default();
m.run(&mut system); m._run_debug(&mut system);
let expected_trace = fs::read_to_string(get_full_path!("reg_trace", $a)).unwrap(); let expected_trace = fs::read_to_string(get_full_path!("reg_trace", $a)).unwrap();
assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m)); assert!(mem_cmp::MemChecker::compare_machine_memory(&memory_after, &m));
assert!(expected_trace.contains(m.registers_trace.as_str())); assert!(expected_trace.contains(m.registers_trace.as_str()));