From 2262d7e3d29c24f38480bb8ed61ed0c590ffbcee Mon Sep 17 00:00:00 2001 From: hneemann Date: Fri, 24 Feb 2017 15:29:23 +0100 Subject: [PATCH] added an cmos xor gate test case --- .../digital/integration/TestExamples.java | 84 +-- src/test/resources/dig/test/fet/xor.dig | 611 ++++++++++++++++++ src/test/resources/dig/test/transp/pull.dig | 15 + 3 files changed, 673 insertions(+), 37 deletions(-) create mode 100644 src/test/resources/dig/test/fet/xor.dig 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 + + + + +