Search in sources :

Example 1 with ModelEntry

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);
}
Also used : ModelEntry(de.neemann.digital.draw.model.ModelEntry) ElementLibrary(de.neemann.digital.draw.library.ElementLibrary) Node(de.neemann.digital.core.Node) Model(de.neemann.digital.core.Model) ShapeFactory(de.neemann.digital.draw.shapes.ShapeFactory) Circuit(de.neemann.digital.draw.elements.Circuit) TestExecuter(de.neemann.digital.TestExecuter) File(java.io.File) ModelCreator(de.neemann.digital.draw.model.ModelCreator)

Example 2 with ModelEntry

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;
}
Also used : ModelEntry(de.neemann.digital.draw.model.ModelEntry)

Aggregations

ModelEntry (de.neemann.digital.draw.model.ModelEntry)2 TestExecuter (de.neemann.digital.TestExecuter)1 Model (de.neemann.digital.core.Model)1 Node (de.neemann.digital.core.Node)1 Circuit (de.neemann.digital.draw.elements.Circuit)1 ElementLibrary (de.neemann.digital.draw.library.ElementLibrary)1 ModelCreator (de.neemann.digital.draw.model.ModelCreator)1 ShapeFactory (de.neemann.digital.draw.shapes.ShapeFactory)1 File (java.io.File)1