public ReducedBooleanExpression(ExpandedBooleanExpression bexpr)
        {
            _sortedVariables = bexpr.GetAllVariables();
            ushort index = 0;

            foreach (char c in _sortedVariables)
            {
                _alphabet[c] = index;
                index++;
            }
            Implicant i = null;

            foreach (string factor in bexpr.AsString.Split('+'))
            {
                i = new Implicant(this, factor);
                if ((i == null) || (i.IsContradiction))
                {
                    continue;
                }
                _implicants.Add(i);
            }
            //
            CalculatePrimeImplicants();
            BuildMintermToPrimeImplicantTable();
            _mintermCount = _primeImplicantTable.Count();
            PickFinalImplicants();
        }
Exemple #2
0
 public void TestValidExpandedExpressions()
 {
     foreach (ExpressionTestCase t in validCases)
     {
         expr = new ExpandedBooleanExpression(t.inputExpression);
         Assert.AreEqual(t.expectedExpression, expr.ToString());
     }
 }
Exemple #3
0
 public void TestVariableParsing()
 {
     foreach (ExpressionTestCase te in validCases)
     {
         expr = new ExpandedBooleanExpression(te.inputExpression);
         CollectionAssert.AreEqual(expr.GetAllVariables(), te.variables);
     }
 }
Exemple #4
0
 public void TestVariableCount()
 {
     foreach (ExpressionTestCase te in validCases)
     {
         expr = new ExpandedBooleanExpression(te.inputExpression);
         Assert.AreEqual(expr.GetVariableCount(), te.variableCount);
     }
 }
Exemple #5
0
 public void TestInvalidExpandedExpressions()
 {
     foreach (InvalidExpressionTestCase t in invalidCases)
     {
         try
         {
             expr = new ExpandedBooleanExpression(t.inputExpression);
         }
         catch (Exception e)
         {
             StringAssert.Contains(e.Message, t.expectedExceptionMessage);
         }
     }
 }