diff --git a/src/main/dig/test/TafficLight.dig b/src/main/dig/test/TafficLight1.dig similarity index 100% rename from src/main/dig/test/TafficLight.dig rename to src/main/dig/test/TafficLight1.dig diff --git a/src/main/java/de/neemann/digital/core/basic/XOr.java b/src/main/java/de/neemann/digital/core/basic/XOr.java index cacc66a7d..959ef2ffa 100644 --- a/src/main/java/de/neemann/digital/core/basic/XOr.java +++ b/src/main/java/de/neemann/digital/core/basic/XOr.java @@ -69,4 +69,17 @@ public class XOr extends Node implements Element { return out.asList(); } + /** + * @return input A + */ + public ObservableValue getInputA() { + return a; + } + + /** + * @return input B + */ + public ObservableValue getInputB() { + return b; + } } diff --git a/src/test/java/de/neemann/digital/integration/TestExamples.java b/src/test/java/de/neemann/digital/integration/TestExamples.java index 4ad567489..ad15497a4 100644 --- a/src/test/java/de/neemann/digital/integration/TestExamples.java +++ b/src/test/java/de/neemann/digital/integration/TestExamples.java @@ -39,8 +39,8 @@ public class TestExamples extends TestCase { */ public void testTestExamples() throws Exception { File examples = new File(Resources.getRoot(), "/dig/test"); - assertEquals(51, new FileScanner(this::check).scan(examples)); - assertEquals(44, testCasesInFiles); + assertEquals(53, new FileScanner(this::check).scan(examples)); + assertEquals(47, testCasesInFiles); } diff --git a/src/test/java/de/neemann/digital/integration/TestShapes.java b/src/test/java/de/neemann/digital/integration/TestShapes.java index 92b184a6d..0107f6e73 100644 --- a/src/test/java/de/neemann/digital/integration/TestShapes.java +++ b/src/test/java/de/neemann/digital/integration/TestShapes.java @@ -22,9 +22,17 @@ public class TestShapes extends TestCase { * @throws Exception */ public void testShapes() throws Exception { + useShapes(false); + } + + public void testShapesIEEE() throws Exception { + useShapes(true); + } + + private void useShapes(boolean ieee) throws Exception { File filename = new File(Resources.getRoot(), "dig/shapes.dig"); ElementLibrary library = new ElementLibrary(); - ShapeFactory shapeFactory = new ShapeFactory(library); + ShapeFactory shapeFactory = new ShapeFactory(library, ieee); Circuit circuit = Circuit.loadCircuit(filename, shapeFactory); // try to write circuit to graphics instance diff --git a/src/test/java/de/neemann/digital/integration/TestTrans.java b/src/test/java/de/neemann/digital/integration/TestTrans.java new file mode 100644 index 000000000..55b9c4194 --- /dev/null +++ b/src/test/java/de/neemann/digital/integration/TestTrans.java @@ -0,0 +1,38 @@ +package de.neemann.digital.integration; + +import de.neemann.digital.core.Model; +import de.neemann.digital.core.Node; +import de.neemann.digital.core.ObservableValue; +import de.neemann.digital.core.Signal; +import de.neemann.digital.core.basic.XOr; +import junit.framework.TestCase; + +import java.util.ArrayList; + +/** + * Tests the handling of transparent circuits which only connect an input to an output. + *

+ * Created by hneemann on 08.04.17. + */ +public class TestTrans extends TestCase { + + public void testTrans() throws Exception { + Model model = new ToBreakRunner("dig/test/transp/transtest3.dig").getModel(); + assertEquals(2, model.getInputs().size()); + assertEquals(1, model.getOutputs().size()); + assertEquals(1, model.getNodes().size()); + + Node node = model.getNodes().get(0); + assertTrue(node instanceof XOr); + XOr xor = (XOr) node; + + // The models inputs are the xor input values! + // All the intermediate transparent stuff is removed! + ArrayList ins = new ArrayList<>(); + for (Signal s : model.getInputs()) + ins.add(s.getValue()); + assertTrue(ins.contains(xor.getInputA())); + assertTrue(ins.contains(xor.getInputB())); + } + +} diff --git a/src/test/resources/dig/shapes.dig b/src/test/resources/dig/shapes.dig index 806bc9d46..6fa9a5473 100644 --- a/src/test/resources/dig/shapes.dig +++ b/src/test/resources/dig/shapes.dig @@ -402,6 +402,16 @@ + + RotEncoder + + + + + RAMSinglePortSel + + + \ No newline at end of file diff --git a/src/test/resources/dig/test/transp/trans.dig b/src/test/resources/dig/test/transp/trans.dig index 1ee5f2c46..a7e0e2d77 100644 --- a/src/test/resources/dig/test/transp/trans.dig +++ b/src/test/resources/dig/test/transp/trans.dig @@ -64,6 +64,23 @@ + + Testcase + + + Testdata + + A B Ao Bo +1 X 1 X +0 X 0 X +X 1 X 1 +X 0 X 0 + + + + + + diff --git a/src/test/resources/dig/test/transp/trans2.dig b/src/test/resources/dig/test/transp/trans2.dig index 23ae2698a..d49832ebd 100644 --- a/src/test/resources/dig/test/transp/trans2.dig +++ b/src/test/resources/dig/test/transp/trans2.dig @@ -7,16 +7,6 @@ - - Out - - - Label - Y - - - - In @@ -37,26 +27,50 @@ + + Out + + + Description + Ist direkt mit A verbunden. + + + Label + Ao + + + + + + Out + + + Description + Ist direkt mit B verbunden. + + + Label + Bo + + + + Testcase Testdata - A B Y -0 0 0 -0 1 1 -1 0 1 -1 1 0 + A B Ao Bo +1 X 1 X +0 X 0 X +X 1 X 1 +X 0 X 0 + - - - - XOr - - + @@ -72,10 +86,6 @@ - - - - diff --git a/src/test/resources/dig/test/transp/trans3.dig b/src/test/resources/dig/test/transp/trans3.dig new file mode 100644 index 000000000..c5ce97916 --- /dev/null +++ b/src/test/resources/dig/test/transp/trans3.dig @@ -0,0 +1,110 @@ + + + 1 + + + In + + + Label + A + + + + + + In + + + Label + B + + + + + + Out + + + Description + Ist direkt mit A verbunden. + + + Label + Ao + + + + + + Out + + + Description + Ist direkt mit B verbunden. + + + Label + Bo + + + + + + trans2.dig + + + + + Testcase + + + Testdata + + A B Ao Bo +1 X 1 X +0 X 0 X +X 1 X 1 +X 0 X 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/dig/test/transp/transtest2.dig b/src/test/resources/dig/test/transp/transtest2.dig index 38a7f7fad..4fc842b0f 100644 --- a/src/test/resources/dig/test/transp/transtest2.dig +++ b/src/test/resources/dig/test/transp/transtest2.dig @@ -10,7 +10,7 @@ Y - + In @@ -46,7 +46,12 @@ - + + + + XOr + + trans2.dig @@ -55,17 +60,41 @@ + + + + - + + + + + + + + + + + + + - + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/dig/test/transp/transtest3.dig b/src/test/resources/dig/test/transp/transtest3.dig new file mode 100644 index 000000000..2e6207795 --- /dev/null +++ b/src/test/resources/dig/test/transp/transtest3.dig @@ -0,0 +1,100 @@ + + + 1 + + + Out + + + Label + Y + + + + + + In + + + Label + A + + + + + + In + + + Label + B + + + + + + Testcase + + + Testdata + + A B Y +0 0 0 +0 1 1 +1 0 1 +1 1 0 + + + + + + + XOr + + + + + trans3.dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file