Search in sources :

Example 36 with TestExecuter

use of de.neemann.digital.TestExecuter in project Digital by hneemann.

the class CircuitBuilderTest method testBuilderSequentialJK.

public void testBuilderSequentialJK() throws Exception {
    Variable y0 = new Variable("Y_0");
    Variable y1 = new Variable("Y_1");
    // counter
    Expression y0s = not(y0);
    Expression y1s = or(not(y0), not(y1));
    ElementLibrary library = new ElementLibrary();
    Circuit circuit = new CircuitBuilder(new ShapeFactory(library), true).addSequential("Y_0", y0s).addSequential("Y_1", y1s).createCircuit();
    ModelCreator m = new ModelCreator(circuit, library);
    TestExecuter te = new TestExecuter(m.createModel(false)).setUp(m);
    te.check(0, 0);
    te.checkC(1, 1);
    te.checkC(0, 0);
    te.checkC(1, 1);
    te.checkC(0, 0);
}
Also used : ElementLibrary(de.neemann.digital.draw.library.ElementLibrary) Variable(de.neemann.digital.analyse.expression.Variable) Expression(de.neemann.digital.analyse.expression.Expression) ShapeFactory(de.neemann.digital.draw.shapes.ShapeFactory) Circuit(de.neemann.digital.draw.elements.Circuit) TestExecuter(de.neemann.digital.TestExecuter) ModelCreator(de.neemann.digital.draw.model.ModelCreator)

Example 37 with TestExecuter

use of de.neemann.digital.TestExecuter in project Digital by hneemann.

the class SplitterMixTest method test2.

public void test2() throws Exception {
    ObservableValue a = new ObservableValue("a", 8);
    ObservableValue b = new ObservableValue("b", 8);
    Splitter splitter = new Splitter(new ElementAttributes().set(Keys.INPUT_SPLIT, "8,8").set(Keys.OUTPUT_SPLIT, "12,4"));
    splitter.setInputs(ovs(a, b));
    assertEquals(1, a.observerCount());
    assertEquals(2, b.observerCount());
    ObservableValues outputs = splitter.getOutputs();
    assertEquals(2, outputs.size());
    TestExecuter sc = new TestExecuter().setInputs(a, b).setOutputsOf(splitter);
    sc.check(0x00, 0x00, 0x000, 0x0);
    sc.check(0x01, 0x00, 0x001, 0x0);
    sc.check(0x10, 0x00, 0x010, 0x0);
    sc.check(0x00, 0x01, 0x100, 0x0);
    sc.check(0x00, 0x10, 0x000, 0x1);
    sc.check(0x0f, 0x00, 0x00f, 0x0);
    sc.check(0xf0, 0x00, 0x0f0, 0x0);
    sc.check(0x00, 0x0f, 0xf00, 0x0);
    sc.check(0x00, 0xf0, 0x000, 0xf);
    sc.check(0xbc, 0xda, 0xabc, 0xd);
}
Also used : ObservableValues(de.neemann.digital.core.ObservableValues) ObservableValue(de.neemann.digital.core.ObservableValue) ElementAttributes(de.neemann.digital.core.element.ElementAttributes) TestExecuter(de.neemann.digital.TestExecuter)

Example 38 with TestExecuter

use of de.neemann.digital.TestExecuter in project Digital by hneemann.

the class SplitterMixTest method test1.

public void test1() throws Exception {
    ObservableValue a = new ObservableValue("a", 8);
    ObservableValue b = new ObservableValue("b", 8);
    Splitter splitter = new Splitter(new ElementAttributes().set(Keys.INPUT_SPLIT, "8,8").set(Keys.OUTPUT_SPLIT, "4,12"));
    splitter.setInputs(ovs(a, b));
    assertEquals(2, a.observerCount());
    assertEquals(1, b.observerCount());
    ObservableValues outputs = splitter.getOutputs();
    assertEquals(2, outputs.size());
    TestExecuter sc = new TestExecuter().setInputs(a, b).setOutputsOf(splitter);
    sc.check(0x00, 0x00, 0x0, 0x000);
    sc.check(0x01, 0x00, 0x1, 0x000);
    sc.check(0x10, 0x00, 0x0, 0x001);
    sc.check(0x00, 0x01, 0x0, 0x010);
    sc.check(0x00, 0x10, 0x0, 0x100);
    sc.check(0x0f, 0x00, 0xf, 0x000);
    sc.check(0xf0, 0x00, 0x0, 0x00f);
    sc.check(0x00, 0x0f, 0x0, 0x0f0);
    sc.check(0x00, 0xf0, 0x0, 0xf00);
    sc.check(0xc0, 0xab, 0x0, 0xabc);
}
Also used : ObservableValues(de.neemann.digital.core.ObservableValues) ObservableValue(de.neemann.digital.core.ObservableValue) ElementAttributes(de.neemann.digital.core.element.ElementAttributes) TestExecuter(de.neemann.digital.TestExecuter)

Example 39 with TestExecuter

use of de.neemann.digital.TestExecuter in project Digital by hneemann.

the class SplitterMixTest method test3.

public void test3() throws Exception {
    ObservableValue a = new ObservableValue("a", 4);
    ObservableValue b = new ObservableValue("b", 4);
    ObservableValue c = new ObservableValue("c", 4);
    Splitter splitter = new Splitter(new ElementAttributes().set(Keys.INPUT_SPLIT, "4,4,4").set(Keys.OUTPUT_SPLIT, "2,8,2"));
    splitter.setInputs(ovs(a, b, c));
    assertEquals(2, a.observerCount());
    assertEquals(1, b.observerCount());
    assertEquals(2, c.observerCount());
    ObservableValues outputs = splitter.getOutputs();
    assertEquals(3, outputs.size());
    TestExecuter sc = new TestExecuter().setInputs(a, b, c).setOutputsOf(splitter);
    sc.check(0x0, 0x0, 0x0, 0x0, 0x00, 0x0);
    sc.check(0xf, 0x0, 0x0, 0x3, 0x03, 0x0);
    sc.check(0x0, 0xf, 0x0, 0x0, 0x3c, 0x0);
    sc.check(0x0, 0x0, 0xf, 0x0, 0xc0, 0x3);
    sc.check(0xf, 0xf, 0xf, 0x3, 0xff, 0x3);
}
Also used : ObservableValues(de.neemann.digital.core.ObservableValues) ObservableValue(de.neemann.digital.core.ObservableValue) ElementAttributes(de.neemann.digital.core.element.ElementAttributes) TestExecuter(de.neemann.digital.TestExecuter)

Example 40 with TestExecuter

use of de.neemann.digital.TestExecuter in project Digital by hneemann.

the class AddTest method testAdd31.

public void testAdd31() throws Exception {
    ObservableValue a = new ObservableValue("a", 31);
    ObservableValue b = new ObservableValue("b", 31);
    ObservableValue c = new ObservableValue("c", 1);
    Model model = new Model();
    Add node = new Add(new ElementAttributes().setBits(31));
    node.setInputs(ovs(a, b, c));
    model.add(node);
    TestExecuter sc = new TestExecuter(model).setInputs(a, b, c).setOutputs(node.getOutputs());
    sc.check(-1, 0, 1, 0, 1);
    sc.check(-1, 1, 0, 0, 1);
}
Also used : ObservableValue(de.neemann.digital.core.ObservableValue) Model(de.neemann.digital.core.Model) ElementAttributes(de.neemann.digital.core.element.ElementAttributes) TestExecuter(de.neemann.digital.TestExecuter)

Aggregations

TestExecuter (de.neemann.digital.TestExecuter)80 ObservableValue (de.neemann.digital.core.ObservableValue)61 ElementAttributes (de.neemann.digital.core.element.ElementAttributes)61 Model (de.neemann.digital.core.Model)49 ObservableValues (de.neemann.digital.core.ObservableValues)16 Circuit (de.neemann.digital.draw.elements.Circuit)5 ElementLibrary (de.neemann.digital.draw.library.ElementLibrary)5 ModelCreator (de.neemann.digital.draw.model.ModelCreator)5 ShapeFactory (de.neemann.digital.draw.shapes.ShapeFactory)5 Expression (de.neemann.digital.analyse.expression.Expression)4 Variable (de.neemann.digital.analyse.expression.Variable)4 Node (de.neemann.digital.core.Node)1 FanIn (de.neemann.digital.core.basic.FanIn)1 Delay (de.neemann.digital.core.wiring.Delay)1 ModelEntry (de.neemann.digital.draw.model.ModelEntry)1 File (java.io.File)1