use of de.neemann.digital.draw.model.ModelEntry in project Digital by hneemann.
the class TestAnd method testAnd.
/**
* Reads a file and sets up a model from it.
* After that the model - a simple AND gate - is tested to be a working AND gate.
*
* @throws Exception
*/
public void testAnd() throws Exception {
File filename = new File(Resources.getRoot(), "dig/and.dig");
Circuit circuit = Circuit.loadCircuit(filename, new ShapeFactory(new ElementLibrary()));
ModelCreator md = new ModelCreator(circuit, library);
Model model = md.createModel(false);
List<Node> nodes = model.getNodes();
assertEquals(1, nodes.size());
// get inputs and outputs
List<ModelEntry> inputs = md.getEntries("In");
assertEquals(2, inputs.size());
List<ModelEntry> outputs = md.getEntries("Out");
assertEquals(1, outputs.size());
// check the inputs state: the input itself has an output
assertEquals(0, inputs.get(0).getIoState().inputCount());
assertEquals(1, inputs.get(0).getIoState().outputCount());
assertEquals(0, inputs.get(1).getIoState().inputCount());
assertEquals(1, inputs.get(1).getIoState().outputCount());
// check the output state: the output itself has an input
assertEquals(1, outputs.get(0).getIoState().inputCount());
assertEquals(0, outputs.get(0).getIoState().outputCount());
// setup the test executer
TestExecuter te = new TestExecuter(model).setInputs(inputs).setOutputs(outputs);
te.check(0, 0, 0);
te.check(0, 1, 0);
te.check(1, 0, 0);
te.check(1, 1, 1);
}
use of de.neemann.digital.draw.model.ModelEntry in project Digital by hneemann.
the class TestExecuter method setUp.
public TestExecuter setUp(ModelCreator modelCreator) {
List<ModelEntry> inputs = modelCreator.getEntries("In");
List<ModelEntry> outputs = modelCreator.getEntries("Out");
for (ModelEntry input : inputs) {
assertEquals(0, input.getIoState().inputCount());
assertEquals(1, input.getIoState().outputCount());
}
for (ModelEntry output : outputs) {
assertEquals(1, output.getIoState().inputCount());
assertEquals(0, output.getIoState().outputCount());
}
setInputs(inputs);
setOutputs(outputs);
return this;
}
Aggregations