From 368cb2de27b1409f9ac837d79b5ecfa80ecb11d1 Mon Sep 17 00:00:00 2001 From: hneemann Date: Tue, 31 Jul 2018 21:55:34 +0200 Subject: [PATCH] added a test for the ProgramMemoryLoader --- .../java/de/neemann/digital/gui/Main.java | 6 +- ...omLoader.java => ProgramMemoryLoader.java} | 4 +- .../digital/gui/ProgramMemoryLoaderTest.java | 33 +++++++ src/test/resources/dig/testProgLoader.dig | 96 +++++++++++++++++++ src/test/resources/dig/testProgLoader.hex | 4 + 5 files changed, 138 insertions(+), 5 deletions(-) rename src/main/java/de/neemann/digital/gui/{ProgramMemoryRomLoader.java => ProgramMemoryLoader.java} (92%) create mode 100644 src/test/java/de/neemann/digital/gui/ProgramMemoryLoaderTest.java create mode 100644 src/test/resources/dig/testProgLoader.dig create mode 100644 src/test/resources/dig/testProgLoader.hex diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java index 44afb853c..bf96788af 100644 --- a/src/main/java/de/neemann/digital/gui/Main.java +++ b/src/main/java/de/neemann/digital/gui/Main.java @@ -1279,7 +1279,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS modelModifier.preInit(model); else { if (settings.get(Keys.PRELOAD_PROGRAM)) - new ProgramMemoryRomLoader(settings.get(Keys.PROGRAM_TO_PRELOAD)).preInit(model); + new ProgramMemoryLoader(settings.get(Keys.PROGRAM_TO_PRELOAD)).preInit(model); } model.init(); @@ -1651,7 +1651,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS @Override public void start(File romHex) { SwingUtilities.invokeLater(() -> { - runModelState.enter(true, new ProgramMemoryRomLoader(romHex)); + runModelState.enter(true, new ProgramMemoryLoader(romHex)); circuitComponent.repaintNeeded(); }); } @@ -1659,7 +1659,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS @Override public void debug(File romHex) { SwingUtilities.invokeLater(() -> { - runModelState.enter(false, new ProgramMemoryRomLoader(romHex)); + runModelState.enter(false, new ProgramMemoryLoader(romHex)); circuitComponent.repaintNeeded(); if (model != null) showMeasurementDialog(ModelEvent.STEP); diff --git a/src/main/java/de/neemann/digital/gui/ProgramMemoryRomLoader.java b/src/main/java/de/neemann/digital/gui/ProgramMemoryLoader.java similarity index 92% rename from src/main/java/de/neemann/digital/gui/ProgramMemoryRomLoader.java rename to src/main/java/de/neemann/digital/gui/ProgramMemoryLoader.java index e02070126..b4cc78c21 100644 --- a/src/main/java/de/neemann/digital/gui/ProgramMemoryRomLoader.java +++ b/src/main/java/de/neemann/digital/gui/ProgramMemoryLoader.java @@ -19,7 +19,7 @@ import java.util.List; /** * A Modifier that loads a given rom file to the program memory of the model. */ -public class ProgramMemoryRomLoader implements ModelModifier { +public class ProgramMemoryLoader implements ModelModifier { private final File romHex; /** @@ -27,7 +27,7 @@ public class ProgramMemoryRomLoader implements ModelModifier { * * @param romHex the file to load */ - ProgramMemoryRomLoader(File romHex) { + ProgramMemoryLoader(File romHex) { this.romHex = romHex; } diff --git a/src/test/java/de/neemann/digital/gui/ProgramMemoryLoaderTest.java b/src/test/java/de/neemann/digital/gui/ProgramMemoryLoaderTest.java new file mode 100644 index 000000000..7cff46cca --- /dev/null +++ b/src/test/java/de/neemann/digital/gui/ProgramMemoryLoaderTest.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2016 Helmut Neemann + * Use of this source code is governed by the GPL v3 license + * that can be found in the LICENSE file. + */ +package de.neemann.digital.gui; + +import de.neemann.digital.core.Model; +import de.neemann.digital.core.memory.RAMDualPort; +import de.neemann.digital.integration.Resources; +import de.neemann.digital.integration.ToBreakRunner; +import junit.framework.TestCase; + +import java.io.File; +import java.util.List; + +public class ProgramMemoryLoaderTest extends TestCase { + + public void testSimple() throws Exception { + ToBreakRunner runner = new ToBreakRunner("dig/testProgLoader.dig", false); + Model model = runner.getModel(); + File romHex = new File(Resources.getRoot(), "dig/testProgLoader.hex"); + new ProgramMemoryLoader(romHex).preInit(model); + model.init(); + + List ramList = model.findNode(RAMDualPort.class); + assertEquals(1, ramList.size()); + RAMDualPort ram = ramList.get(0); + + assertEquals(0x55, ram.getMemory().getDataWord(0)); + assertEquals(0xAA, ram.getMemory().getDataWord(1)); + } +} \ No newline at end of file diff --git a/src/test/resources/dig/testProgLoader.dig b/src/test/resources/dig/testProgLoader.dig new file mode 100644 index 000000000..f77c5a07c --- /dev/null +++ b/src/test/resources/dig/testProgLoader.dig @@ -0,0 +1,96 @@ + + + 1 + + + + RAMDualPort + + + AddrBits + 8 + + + Bits + 8 + + + isProgramMemory + true + + + + + + In + + + Bits + 8 + + + + + + In + + + Bits + 8 + + + + + + In + + + + + In + + + + + In + + + + + Out + + + Bits + 8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/dig/testProgLoader.hex b/src/test/resources/dig/testProgLoader.hex new file mode 100644 index 000000000..ba0d8ac81 --- /dev/null +++ b/src/test/resources/dig/testProgLoader.hex @@ -0,0 +1,4 @@ +v2.0 raw +55 +AA +