コード例 #1
0
ファイル: CsAlgebraTests.cs プロジェクト: michkot/Automata
        public void TestCsAlgebra_Mk()
        {
            var css         = new CharSetSolver();
            var aA          = css.MkCharConstraint('a', true);
            var a           = css.MkCharConstraint('a', false);
            var b           = css.MkCharConstraint('b');
            var ab          = css.MkOr(a, b);
            var csa         = new CsAlgebra <BDD>(css, new ICounter[] { new BoundedCounter(0, 4, 5), new BoundedCounter(1, 4, 5), new BoundedCounter(2, 4, 5), });
            var alpha       = csa.MkPredicate(ab, true, CsCondition.TRUE, CsCondition.CANEXIT, CsCondition.TRUE);
            var alpha_cases = alpha.ToArray();

            Assert.IsTrue(alpha_cases.Length == 1);
            Assert.IsTrue(alpha_cases[0].Item2.Equals(ab));
            Assert.IsTrue(alpha_cases[0].Item1.Equals(CsConditionSeq.MkAND(CsCondition.TRUE, CsCondition.CANEXIT, CsCondition.TRUE)));
            var beta  = csa.MkPredicate(aA, true, CsCondition.TRUE, CsCondition.CANLOOP, CsCondition.TRUE);
            var gamma = csa.MkAnd(alpha, beta);
            var res   = new List <Tuple <CsConditionSeq, BDD> >(gamma.GetSumOfProducts());

            Assert.IsTrue(res.Count == 1);
            var counter_cond = res[0].Item1;
            var input_pred   = res[0].Item2;

            Assert.IsTrue(input_pred.Equals(a));
            Assert.IsTrue(counter_cond[1] == CsCondition.MIDDLE);
        }