use asmachina::MachineW;
#[test]
fn test_interactive_character_io() {
let mut machine = MachineW::new();
machine.set_interactive_mode(false);
machine.set_input_buffer(vec![65, 66, 67]);
let wpr_instruction = (0b01110 << 11) | 0; machine.memory[0] = wpr_instruction;
machine.l = 0;
machine.is_running = true;
assert!(machine.step().is_ok());
assert_eq!(machine.ak, 65);
machine.set_interactive_mode(true);
machine.ak = 72; let wyj_instruction = (0b01111 << 11) | 0; machine.memory[1] = wyj_instruction;
machine.l = 1;
assert!(machine.step().is_ok());
assert_eq!(machine.get_output_buffer(), &[72]); }
#[test]
fn test_character_io_buffer_mode() {
let mut machine = MachineW::new();
machine.set_interactive_mode(false);
machine.set_input_buffer(vec![65, 66, 67]);
let wejscie_instruction = (0b01110 << 11) | 0; machine.memory[0] = wejscie_instruction;
machine.l = 0;
machine.is_running = true;
assert!(machine.step().is_ok());
assert_eq!(machine.ak, 65);
machine.ak = 72; let wyjscie_instruction = (0b01111 << 11) | 0; machine.memory[1] = wyjscie_instruction;
machine.l = 1;
assert!(machine.step().is_ok());
assert_eq!(machine.get_output_buffer(), &[72]); }
#[test]
fn test_simple_character_echo() {
let mut machine = MachineW::new();
let program = vec![
(0b01110 << 11) | 0, (0b01111 << 11) | 0, (0b00111 << 11) | 0, ];
machine.set_input_buffer(vec![72]); assert!(machine.load_program(&program).is_ok());
let result = machine.run();
assert!(result.is_ok());
assert_eq!(machine.ak, 72); assert_eq!(machine.get_output_buffer(), &[72]); assert_eq!(machine.is_running, false); }