Search in sources :

Example 31 with Expression

use of de.neemann.digital.analyse.expression.Expression in project Digital by hneemann.

the class KarnaughMapTest method testSimple_BUG.

public void testSimple_BUG() throws IOException, ParseException, KarnaughException {
    Expression exp = new Parser("(¬A B ¬C) ∨ (A C) ∨ ¬B").parse().get(0);
    KarnaughMap c = new KarnaughMap(Variable.vars(3), exp);
    assertEquals(3, c.size());
    Iterator<KarnaughMap.Cover> it = c.iterator();
    assertEquals(1, it.next().getSize());
    assertEquals(2, it.next().getSize());
    assertEquals(4, it.next().getSize());
}
Also used : Expression(de.neemann.digital.analyse.expression.Expression) Parser(de.neemann.digital.analyse.parser.Parser)

Example 32 with Expression

use of de.neemann.digital.analyse.expression.Expression in project Digital by hneemann.

the class KarnaughMapTest method testBUG_1.

// in 4x4 map a 8 cell block is drawn in wrong orientation
public void testBUG_1() throws IOException, ParseException, KarnaughException {
    Expression exp = new Variable("D");
    KarnaughMap c = new KarnaughMap(Variable.vars(4), exp);
    assertEquals(1, c.size());
    KarnaughMap.Cover co = c.iterator().next();
    assertTrue(co.isDisconnected());
    assertFalse(co.onlyEdges());
    assertTrue(co.isVerticalDivided());
    exp = new Variable("B");
    c = new KarnaughMap(Variable.vars(4), exp);
    assertEquals(1, c.size());
    co = c.iterator().next();
    assertTrue(co.isDisconnected());
    assertFalse(co.onlyEdges());
    assertFalse(co.isVerticalDivided());
}
Also used : Variable(de.neemann.digital.analyse.expression.Variable) Expression(de.neemann.digital.analyse.expression.Expression)

Example 33 with Expression

use of de.neemann.digital.analyse.expression.Expression in project Digital by hneemann.

the class BuilderExpressionCreatorTest method testSimple.

public void testSimple() throws FormatterException, ExpressionException, ElementNotFoundException, PinException, NodeException, AnalyseException, BacktrackException {
    Variable a = v("A");
    Variable b = v("B");
    Expression xor = or(and(a, not(b)), and(not(a), b));
    ExpressionListenerStore els = new ExpressionListenerStore(null);
    els.resultFound("xor", xor);
    els.close();
    Model m = create(els, ExpressionModifier.IDENTITY);
    assertEquals(5, m.size());
    assertEquals(2, m.findNode(And.class).size());
    assertEquals(1, m.findNode(Or.class).size());
    assertEquals(2, m.findNode(Not.class).size());
    check(m);
    m = create(els, new de.neemann.digital.analyse.expression.modify.NAnd());
    assertEquals(5, m.size());
    assertEquals(2, m.findNode(Not.class).size());
    assertEquals(3, m.findNode(NAnd.class).size());
    check(m);
    m = create(els, new de.neemann.digital.analyse.expression.modify.NOr());
    assertEquals(6, m.size());
    assertEquals(3, m.findNode(Not.class).size());
    assertEquals(3, m.findNode(NOr.class).size());
    check(m);
}
Also used : Variable(de.neemann.digital.analyse.expression.Variable) Expression(de.neemann.digital.analyse.expression.Expression) Model(de.neemann.digital.core.Model)

Example 34 with Expression

use of de.neemann.digital.analyse.expression.Expression in project Digital by hneemann.

the class TestResultTest method getModel.

private Model getModel(String func) throws IOException, ParseException, BuilderException, PinException, NodeException, ElementNotFoundException {
    ArrayList<Expression> exp = new Parser(func).parse();
    ElementLibrary library = new ElementLibrary();
    CircuitBuilder cb = new CircuitBuilder(new ShapeFactory(library));
    cb.addCombinatorial("Y", exp.get(0));
    Circuit circ = cb.createCircuit();
    Model model = new ModelCreator(circ, library).createModel(false);
    model.init();
    return model;
}
Also used : ElementLibrary(de.neemann.digital.draw.library.ElementLibrary) Expression(de.neemann.digital.analyse.expression.Expression) Model(de.neemann.digital.core.Model) ShapeFactory(de.neemann.digital.draw.shapes.ShapeFactory) Circuit(de.neemann.digital.draw.elements.Circuit) ModelCreator(de.neemann.digital.draw.model.ModelCreator) Parser(de.neemann.digital.analyse.parser.Parser) CircuitBuilder(de.neemann.digital.builder.circuit.CircuitBuilder)

Example 35 with Expression

use of de.neemann.digital.analyse.expression.Expression in project Digital by hneemann.

the class DetermineJKStateMachineTest method testSimpleBUG.

public void testSimpleBUG() throws Exception {
    Expression e = or(b, nota);
    DetermineJKStateMachine jk = new DetermineJKStateMachine("a", e);
    assertEquals("1", toStr(jk.getSimplifiedJ()));
    assertEquals("¬b", toStr(jk.getSimplifiedK()));
    assertFalse(jk.isDFF());
}
Also used : FormatToExpression(de.neemann.digital.analyse.expression.format.FormatToExpression) Expression(de.neemann.digital.analyse.expression.Expression)

Aggregations

Expression (de.neemann.digital.analyse.expression.Expression)60 Variable (de.neemann.digital.analyse.expression.Variable)34 FormatToExpression (de.neemann.digital.analyse.expression.format.FormatToExpression)12 Parser (de.neemann.digital.analyse.parser.Parser)11 ContextFiller (de.neemann.digital.analyse.expression.ContextFiller)10 NamedExpression (de.neemann.digital.analyse.expression.NamedExpression)9 ByteArrayOutputStream (java.io.ByteArrayOutputStream)7 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 ArrayList (java.util.ArrayList)5 TestExecuter (de.neemann.digital.TestExecuter)4 QuineMcCluskey (de.neemann.digital.analyse.quinemc.QuineMcCluskey)3 PrimeSelectorDefault (de.neemann.digital.analyse.quinemc.primeselector.PrimeSelectorDefault)3 TableRow (de.neemann.digital.analyse.quinemc.TableRow)2 Model (de.neemann.digital.core.Model)2 Date (java.util.Date)2 DetermineJKStateMachine (de.neemann.digital.analyse.DetermineJKStateMachine)1 ExpressionException (de.neemann.digital.analyse.expression.ExpressionException)1