fixed the test cases

This commit is contained in:
hneemann 2019-06-28 09:29:01 +02:00
parent 7329c06bd1
commit 95865a1a05
2 changed files with 48 additions and 19 deletions

View File

@ -13,9 +13,13 @@ import de.neemann.digital.core.element.ElementAttributes;
import de.neemann.digital.draw.elements.Circuit;
import de.neemann.digital.draw.elements.VisualElement;
import de.neemann.digital.draw.library.ElementLibrary;
import de.neemann.digital.draw.model.ModelCreator;
import de.neemann.digital.draw.shapes.ShapeFactory;
import de.neemann.digital.integration.Resources;
import de.neemann.digital.integration.ToBreakRunner;
import junit.framework.TestCase;
import java.io.File;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
@ -89,16 +93,20 @@ ExpressionCreator - s0 reduced from 17 to 2 variables ([Q_1n, Q_0n])
}
public void testBacktrackCompleteness() throws Exception {
ToBreakRunner toBreakRunner = new ToBreakRunner("dig/backtrack/AllComponents.dig", false);
File f = new File(Resources.getRoot(), "dig/backtrack/AllComponents.dig");
final ElementLibrary library = new ElementLibrary();
library.setRootFilePath(f.getParentFile());
ShapeFactory shapeFactory = new ShapeFactory(library);
Circuit circuit = Circuit.loadCircuit(f, shapeFactory);
// create a set of all components used in the circuit
Circuit circuit = toBreakRunner.getCircuit();
Set<String> set = new HashSet<>();
for (VisualElement e : circuit.getElements())
set.add(e.getElementName());
// ensure all available components are included in test circuit
for (ElementLibrary.ElementContainer c : toBreakRunner.getLibrary()) {
for (ElementLibrary.ElementContainer c : library) {
if (!set.contains(c.getDescription().getName())) {
// nodes with state are allowed to be missing
Element n = c.getDescription().createElement(new ElementAttributes());
@ -108,7 +116,8 @@ ExpressionCreator - s0 reduced from 17 to 2 variables ([Q_1n, Q_0n])
}
// check if backtracking is ok at all components!
ModelAnalyser m = new ModelAnalyser(toBreakRunner.getModel());
Model model = new ModelCreator(circuit, new SubstituteLibrary(library)).createModel(false);
ModelAnalyser m = new ModelAnalyser(model);
new DependencyAnalyser(m);
}

View File

@ -10,10 +10,19 @@ import de.neemann.digital.analyse.quinemc.BoolTable;
import de.neemann.digital.analyse.quinemc.BoolTableByteArray;
import de.neemann.digital.analyse.quinemc.ThreeStateValue;
import de.neemann.digital.core.Model;
import de.neemann.digital.core.NodeException;
import de.neemann.digital.core.Signal;
import de.neemann.digital.integration.ToBreakRunner;
import de.neemann.digital.draw.elements.Circuit;
import de.neemann.digital.draw.elements.PinException;
import de.neemann.digital.draw.library.ElementLibrary;
import de.neemann.digital.draw.library.ElementNotFoundException;
import de.neemann.digital.draw.model.ModelCreator;
import de.neemann.digital.draw.shapes.ShapeFactory;
import de.neemann.digital.integration.Resources;
import junit.framework.TestCase;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.TreeMap;
@ -25,8 +34,19 @@ import static de.neemann.digital.analyse.quinemc.ThreeStateValue.zero;
*/
public class ModelAnalyserTest extends TestCase {
public Model createModel(String file) throws IOException, ElementNotFoundException, PinException, NodeException {
File f = new File(Resources.getRoot(), file);
final ElementLibrary library = new ElementLibrary();
library.setRootFilePath(f.getParentFile());
ShapeFactory shapeFactory = new ShapeFactory(library);
Circuit circuit = Circuit.loadCircuit(f, shapeFactory);
return new ModelCreator(circuit, new SubstituteLibrary(library)).createModel(false);
}
public void testAnalyzer() throws Exception {
Model model = new ToBreakRunner("dig/analyze/analyzeTest.dig").getModel();
Model model = createModel("dig/analyze/analyzeTest.dig");
TruthTable tt = new ModelAnalyser(model).analyse();
assertEquals(4, tt.getRows());
@ -46,25 +66,25 @@ public class ModelAnalyserTest extends TestCase {
}
public void testAnalyzerDFF() throws Exception {
Model model = new ToBreakRunner("dig/analyze/analyzeTestDFF.dig").getModel();
Model model = createModel("dig/analyze/analyzeTestDFF.dig");
TruthTable tt = new ModelAnalyser(model).analyse();
check2BitCounter(tt);
}
public void testAnalyzerJKFF() throws Exception {
Model model = new ToBreakRunner("dig/analyze/analyzeTestJKFF.dig", false).getModel();
Model model = createModel("dig/analyze/analyzeTestJKFF.dig");
TruthTable tt = new ModelAnalyser(model).analyse();
check2BitCounter(tt);
}
public void testAnalyzerTFF() throws Exception {
Model model = new ToBreakRunner("dig/analyze/analyzeTestTFF.dig", false).getModel();
Model model = createModel("dig/analyze/analyzeTestTFF.dig");
TruthTable tt = new ModelAnalyser(model).analyse();
check2BitCounter(tt);
}
public void testAnalyzerTFFEnable() throws Exception {
Model model = new ToBreakRunner("dig/analyze/analyzeTestTFFEnable.dig", false).getModel();
Model model = createModel("dig/analyze/analyzeTestTFFEnable.dig");
TruthTable tt = new ModelAnalyser(model).analyse();
check2BitCounter(tt);
}
@ -93,7 +113,7 @@ public class ModelAnalyserTest extends TestCase {
}
public void testAnalyzerUniqueNames() throws Exception {
Model model = new ToBreakRunner("dig/analyze/uniqueNames.dig", false).getModel();
Model model = createModel("dig/analyze/uniqueNames.dig");
try {
new ModelAnalyser(model);
fail();
@ -103,7 +123,7 @@ public class ModelAnalyserTest extends TestCase {
}
public void testAnalyzerUniqueNames2() throws Exception {
Model model = new ToBreakRunner("dig/analyze/uniqueNames2.dig", false).getModel();
Model model = createModel("dig/analyze/uniqueNames2.dig");
ArrayList<Signal> ins = new ModelAnalyser(model).getInputs();
assertEquals(2,ins.size());
assertEquals("Q_0n",ins.get(0).getName());
@ -111,7 +131,7 @@ public class ModelAnalyserTest extends TestCase {
}
public void testAnalyzerUniqueNames3() throws Exception {
Model model = new ToBreakRunner("dig/analyze/uniqueNames3.dig", false).getModel();
Model model = createModel("dig/analyze/uniqueNames3.dig");
ArrayList<Signal> ins = new ModelAnalyser(model).getInputs();
assertEquals(2,ins.size());
assertEquals("Zn",ins.get(0).getName());
@ -119,7 +139,7 @@ public class ModelAnalyserTest extends TestCase {
}
public void testAnalyzerUniqueNames4() throws Exception {
Model model = new ToBreakRunner("dig/analyze/uniqueNames4.dig", false).getModel();
Model model = createModel("dig/analyze/uniqueNames4.dig");
ArrayList<Signal> ins = new ModelAnalyser(model).getInputs();
assertEquals(2,ins.size());
assertEquals("Bn",ins.get(0).getName());
@ -127,7 +147,7 @@ public class ModelAnalyserTest extends TestCase {
}
public void testAnalyzerMultiBit() throws Exception {
Model model = new ToBreakRunner("dig/analyze/multiBitCounter.dig", false).getModel();
Model model = createModel("dig/analyze/multiBitCounter.dig");
TruthTable tt = new ModelAnalyser(model).analyse();
checkTable(tt.getResult("Q0n+1"), one, zero, one, zero);
checkTable(tt.getResult("Q1n+1"), zero, one, one, zero);
@ -144,7 +164,7 @@ public class ModelAnalyserTest extends TestCase {
public void testAnalyzerMultiBit2() throws Exception {
Model model = new ToBreakRunner("dig/analyze/multiBitInOut.dig", false).getModel();
Model model = createModel("dig/analyze/multiBitInOut.dig");
TruthTable tt = new ModelAnalyser(model).analyse();
checkIdent(tt);
@ -157,7 +177,7 @@ public class ModelAnalyserTest extends TestCase {
// test with non zero default values set
public void testAnalyzerMultiBit3() throws Exception {
Model model = new ToBreakRunner("dig/analyze/multiBitInOutDef.dig", false).getModel();
Model model = createModel("dig/analyze/multiBitInOutDef.dig");
TruthTable tt = new ModelAnalyser(model).analyse();
checkIdent(tt);
}
@ -176,7 +196,7 @@ public class ModelAnalyserTest extends TestCase {
public void testAnalyzerBacktrack() throws Exception {
Model model = new ToBreakRunner("dig/analyze/analyzeBacktrack.dig", false).getModel();
Model model = createModel("dig/analyze/analyzeBacktrack.dig");
TruthTable tt = new ModelAnalyser(model).analyse();
final BoolTable Y1 = tt.getResult("1Y");
@ -210,7 +230,7 @@ public class ModelAnalyserTest extends TestCase {
}
public void testAnalyzerMultiBitPins() throws Exception {
Model model = new ToBreakRunner("dig/analyze/multiBitInOutXOr.dig", false).getModel();
Model model = createModel("dig/analyze/multiBitInOutXOr.dig");
ModelAnalyserInfo mai = new ModelAnalyser(model).analyse().getModelAnalyzerInfo();
assertEquals(2, mai.getInputBusMap().size());