diff --git a/src/test/java/de/neemann/digital/integration/TestExamples.java b/src/test/java/de/neemann/digital/integration/TestExamples.java
index 5b6f8529c..5e7c947c1 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(41, new FileScanner(this::check).scan(examples));
- assertEquals(31, testCasesInFiles);
+ assertEquals(42, new FileScanner(this::check).scan(examples));
+ assertEquals(33, testCasesInFiles);
}
@@ -50,42 +50,52 @@ public class TestExamples extends TestCase {
* @param dig the model file
*/
private void check(File dig) throws Exception {
- System.out.println("test " + dig);
- boolean shouldFail = dig.getName().endsWith("Error.dig");
- ToBreakRunner br = null;
+ boolean hasTest = false;
try {
- br = new ToBreakRunner(dig);
- } catch (Exception e) {
- if (shouldFail)
- return;
- else
- throw e;
+ boolean shouldFail = dig.getName().endsWith("Error.dig");
+ ToBreakRunner br = null;
+ try {
+ br = new ToBreakRunner(dig);
+ } catch (Exception e) {
+ if (shouldFail) {
+ hasTest = true;
+ return;
+ } else
+ throw e;
+ }
+
+ try {
+ for (VisualElement el : br.getCircuit().getElements())
+ if (el.equalsDescription(TestCaseElement.TESTCASEDESCRIPTION)) {
+ hasTest = true;
+
+ String label = el.getElementAttributes().getCleanLabel();
+ TestData td = el.getElementAttributes().get(TestCaseElement.TESTDATA);
+
+ Model model = new ModelCreator(br.getCircuit(), br.getLibrary()).createModel(false);
+ TestResult tr = new TestResult(td).create(model);
+
+ if (label.contains("Failing"))
+ assertFalse(dig.getName() + ":" + label, tr.allPassed());
+ else
+ assertTrue(dig.getName() + ":" + label, tr.allPassed());
+
+ testCasesInFiles++;
+ }
+ } catch (Exception e) {
+ if (shouldFail) {
+ hasTest = true;
+ return;
+ } else
+ throw e;
+ }
+
+ assertFalse("File should fail but doesn't!", shouldFail);
+
+ } finally {
+ System.out.print("tested " + dig);
+ if (!hasTest) System.out.println(" -- no test cases");
+ else System.out.println();
}
-
- try {
- for (VisualElement el : br.getCircuit().getElements())
- if (el.equalsDescription(TestCaseElement.TESTCASEDESCRIPTION)) {
-
- String label = el.getElementAttributes().getCleanLabel();
- TestData td = el.getElementAttributes().get(TestCaseElement.TESTDATA);
-
- Model model = new ModelCreator(br.getCircuit(), br.getLibrary()).createModel(false);
- TestResult tr = new TestResult(td).create(model);
-
- if (label.contains("Failing"))
- assertFalse(dig.getName() + ":" + label, tr.allPassed());
- else
- assertTrue(dig.getName() + ":" + label, tr.allPassed());
-
- testCasesInFiles++;
- }
- } catch (Exception e) {
- if (shouldFail)
- return;
- else
- throw e;
- }
-
- assertFalse("File should fail but doesn't!", shouldFail);
}
}
diff --git a/src/test/resources/dig/test/fet/xor.dig b/src/test/resources/dig/test/fet/xor.dig
new file mode 100644
index 000000000..a5ea8ade2
--- /dev/null
+++ b/src/test/resources/dig/test/fet/xor.dig
@@ -0,0 +1,611 @@
+
+
+ 1
+
+
+ VDD
+
+
+
+
+ In
+
+
+ Label
+ A
+
+
+
+
+
+ NFET
+
+
+ Label
+ T15
+
+
+
+
+
+ PFET
+
+
+ Label
+ T13
+
+
+
+
+
+ Ground
+
+
+
+
+ In
+
+
+ Label
+ B
+
+
+
+
+
+ NFET
+
+
+ Label
+ T16
+
+
+
+
+
+ PFET
+
+
+ Label
+ T14
+
+
+
+
+
+ NFET
+
+
+ Label
+ T6
+
+
+
+
+
+ PFET
+
+
+ Label
+ T5
+
+
+
+
+
+ Out
+
+
+ Label
+ Y
+
+
+
+
+
+ VDD
+
+
+
+
+ NFET
+
+
+ Label
+ T3
+
+
+
+
+
+ PFET
+
+
+ Label
+ T1
+
+
+
+
+
+ Ground
+
+
+
+
+ NFET
+
+
+ Label
+ T4
+
+
+
+
+
+ PFET
+
+
+ Label
+ T2
+
+
+
+
+
+ VDD
+
+
+
+
+ NFET
+
+
+ Label
+ T9
+
+
+
+
+
+ PFET
+
+
+ Label
+ T7
+
+
+
+
+
+ Ground
+
+
+
+
+ NFET
+
+
+ Label
+ T10
+
+
+
+
+
+ PFET
+
+
+ Label
+ T8
+
+
+
+
+
+ Ground
+
+
+
+
+ VDD
+
+
+
+
+ NFET
+
+
+ Label
+ T12
+
+
+
+
+
+ PFET
+
+
+ Label
+ T11
+
+
+
+
+
+ Ground
+
+
+
+
+ VDD
+
+
+
+
+ Testcase
+
+
+ Testdata
+
+ A B Y
+0 0 0
+0 1 1
+1 0 1
+1 1 0
+
+
+# transitions
+0 0 0
+0 1 1
+0 0 0
+1 0 1
+0 0 0
+1 1 0
+0 0 0
+0 1 1
+1 0 1
+0 1 1
+1 1 0
+0 1 1
+1 0 1
+1 1 0
+1 0 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/resources/dig/test/transp/pull.dig b/src/test/resources/dig/test/transp/pull.dig
index a894251e1..5f908ad70 100644
--- a/src/test/resources/dig/test/transp/pull.dig
+++ b/src/test/resources/dig/test/transp/pull.dig
@@ -31,6 +31,21 @@
+
+ Testcase
+
+
+ Testdata
+
+ i o
+0 0
+1 1
+z 1
+
+
+
+
+