// Path: src/main/java/com/kasirgalabs/etumulator/processor/RegisterFile.java
// @Singleton
// public class RegisterFile implements Observable {
//     private final Map<String, Integer> registers = new HashMap<>(14);
//     private final Dispatcher dispatcher;
// 
//     public RegisterFile() {
//         for(int i = 0; i < 13; i++) {
//             registers.put("r" + Integer.toString(i), 0);
//         }
//         this.dispatcher = new BaseDispatcher();
//     }
// 
//     @Inject
//     public RegisterFile(Dispatcher dispatcher) {
//         for(int i = 0; i < 13; i++) {
//             registers.put("r" + Integer.toString(i), 0);
//         }
//         this.dispatcher = dispatcher;
//     }
// 
//     @Override
//     public void addObserver(Observer observer) {
//         dispatcher.addObserver(observer);
//     }
// 
//     public void setValue(String registerName, int value) {
//         registers.replace(registerName, value);
//         dispatcher.notifyObservers(RegisterFile.class, registerName);
//     }
// 
//     public int getValue(String registerName) {
//         return registers.get(registerName);
//     }
// 
//     public void reset() {
//         registers.clear();
//         for(int i = 0; i < 13; i++) {
//             registers.put("r" + Integer.toString(i), 0);
//         }
//         dispatcher.notifyObservers(RegisterFile.class, "clear");
//     }
// }
// 
// Path: src/main/java/com/kasirgalabs/etumulator/processor/UART.java
// @Singleton
// public class UART implements Observable {
//     private RegisterFile registerFile;
//     private char input;
//     private final Dispatcher dispatcher;
//     private CountDownLatch latch;
// 
//     public UART(RegisterFile registerFile) {
//         this.registerFile = registerFile;
//         this.dispatcher = new BaseDispatcher();
//     }
// 
//     @Inject
//     public UART(RegisterFile registerFile, Dispatcher dispatcher) {
//         this.registerFile = registerFile;
//         this.dispatcher = dispatcher;
//     }
// 
//     public void setRegisterFile(RegisterFile registerFile) {
//         this.registerFile = registerFile;
//     }
// 
//     @Override
//     public void addObserver(Observer observer) {
//         dispatcher.addObserver(observer);
//     }
// 
//     public void read() throws InterruptedException {
//         latch = new CountDownLatch(1);
//         dispatcher.notifyObservers(UART.class, "read");
//         latch.await();
//         registerFile.setValue("r0", input);
//     }
// 
//     public void write() {
//         dispatcher.notifyObservers(UART.class, (char) registerFile.getValue("r0"));
//     }
// 
//     public void feed(char input) {
//         this.input = input;
//         latch.countDown();
//     }
// }


import static org.junit.Assert.assertEquals;
import com.kasirgalabs.etumulator.processor.RegisterFile;
import com.kasirgalabs.etumulator.processor.UART;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.fxml.FXMLLoader;
import org.junit.Before;
import org.junit.Test;
package com.kasirgalabs.etumulator.console;



public class BaseConsoleTest extends UART {
    private Console console;
    private char mockInput;

    public BaseConsoleTest() {
// Path: src/main/java/com/kasirgalabs/etumulator/processor/RegisterFile.java
// @Singleton
// public class RegisterFile implements Observable {
//     private final Map<String, Integer> registers = new HashMap<>(14);
//     private final Dispatcher dispatcher;
// 
//     public RegisterFile() {
//         for(int i = 0; i < 13; i++) {
//             registers.put("r" + Integer.toString(i), 0);
//         }
//         this.dispatcher = new BaseDispatcher();
//     }
// 
//     @Inject
//     public RegisterFile(Dispatcher dispatcher) {
//         for(int i = 0; i < 13; i++) {
//             registers.put("r" + Integer.toString(i), 0);
//         }
//         this.dispatcher = dispatcher;
//     }
// 
//     @Override
//     public void addObserver(Observer observer) {
//         dispatcher.addObserver(observer);
//     }
// 
//     public void setValue(String registerName, int value) {
//         registers.replace(registerName, value);
//         dispatcher.notifyObservers(RegisterFile.class, registerName);
//     }
// 
//     public int getValue(String registerName) {
//         return registers.get(registerName);
//     }
// 
//     public void reset() {
//         registers.clear();
//         for(int i = 0; i < 13; i++) {
//             registers.put("r" + Integer.toString(i), 0);
//         }
//         dispatcher.notifyObservers(RegisterFile.class, "clear");
//     }
// }
// 
// Path: src/main/java/com/kasirgalabs/etumulator/processor/UART.java
// @Singleton
// public class UART implements Observable {
//     private RegisterFile registerFile;
//     private char input;
//     private final Dispatcher dispatcher;
//     private CountDownLatch latch;
// 
//     public UART(RegisterFile registerFile) {
//         this.registerFile = registerFile;
//         this.dispatcher = new BaseDispatcher();
//     }
// 
//     @Inject
//     public UART(RegisterFile registerFile, Dispatcher dispatcher) {
//         this.registerFile = registerFile;
//         this.dispatcher = dispatcher;
//     }
// 
//     public void setRegisterFile(RegisterFile registerFile) {
//         this.registerFile = registerFile;
//     }
// 
//     @Override
//     public void addObserver(Observer observer) {
//         dispatcher.addObserver(observer);
//     }
// 
//     public void read() throws InterruptedException {
//         latch = new CountDownLatch(1);
//         dispatcher.notifyObservers(UART.class, "read");
//         latch.await();
//         registerFile.setValue("r0", input);
//     }
// 
//     public void write() {
//         dispatcher.notifyObservers(UART.class, (char) registerFile.getValue("r0"));
//     }
// 
//     public void feed(char input) {
//         this.input = input;
//         latch.countDown();
//     }
// }


// Path: src/integrationTest/java/com/kasirgalabs/etumulator/console/BaseConsoleTest.java
import static org.junit.Assert.assertEquals;
import com.kasirgalabs.etumulator.processor.RegisterFile;
import com.kasirgalabs.etumulator.processor.UART;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.fxml.FXMLLoader;
import org.junit.Before;
import org.junit.Test;

package com.kasirgalabs.etumulator.console;



public class BaseConsoleTest extends UART {
    private Console console;
    private char mockInput;

    public BaseConsoleTest() {
        super(new RegisterFile());