示例#1
0
        public void NestedSelectStoreConstructedProperly()
        {
            var nested = a.Store(k, v).Select(k);

            ExpressionTestHelper.CheckExpression(
                nested.Expression,
                ExpressionKind.Select,
                Sort.Bool,
                "(select (store a k v) k)",
                2);

            var storeAKV = nested.Expression.Children.ElementAt(0);

            ExpressionTestHelper.CheckExpressionWithChildren(
                storeAKV,
                ExpressionKind.Store,
                arraySort,
                "(store a k v)",
                a.Expression,
                k.Expression,
                v.Expression);

            var kExpr = nested.Expression.Children.ElementAt(1);

            Assert.AreEqual(k, kExpr);
        }
        public void LocalVariableCreatedProperly()
        {
            var graphId = new FlowGraphId(1);
            var builder = new FlowGraphBuilder(graphId);

            string name     = "testBoolVar";
            var    variable = builder.AddLocalVariable(Sort.Bool, name);

            ExpressionTestHelper.CheckExpression(variable, ExpressionKind.Variable, Sort.Bool, name, 0);
            Assert.AreEqual(builder.Graph, variable.Graph);
        }
示例#3
0
        public void NegateOperatorConstructedProperly()
        {
            var negateA = -a;

            ExpressionTestHelper.CheckExpressionWithChildren(
                negateA.Expression,
                ExpressionKind.Negate,
                Sort.Int,
                "(- a)",
                a.Expression);
        }
示例#4
0
        public void NotOperatorConstructedProperly()
        {
            var notA = !a;

            ExpressionTestHelper.CheckExpressionWithChildren(
                notA.Expression,
                ExpressionKind.Not,
                Sort.Bool,
                "(not a)",
                a.Expression);
        }
        public void GlobalVariableCreatedProperly()
        {
            var graphId = new FlowGraphId(1);
            var builder = new FlowGraphBuilder(graphId);

            string name       = "testBoolVar";
            var    variableId = new GlobalFlowVariableId(1);
            var    variable   = new GlobalFlowVariable(variableId, Sort.Bool, name);

            ExpressionTestHelper.CheckExpression(variable, ExpressionKind.Variable, Sort.Bool, name, 0);
        }
示例#6
0
        public void DivideRealOperatorConstructedProperly()
        {
            var aDivideRealB = a.DivideReal(b);

            ExpressionTestHelper.CheckExpressionWithChildren(
                aDivideRealB.Expression,
                ExpressionKind.DivideReal,
                Sort.Real,
                "(/ a b)",
                a.Expression,
                b.Expression);
        }
示例#7
0
        public void MultiplyOperatorConstructedProperly()
        {
            var aMultiplyB = a * b;

            ExpressionTestHelper.CheckExpressionWithChildren(
                aMultiplyB.Expression,
                ExpressionKind.Multiply,
                Sort.Int,
                "(* a b)",
                a.Expression,
                b.Expression);
        }
示例#8
0
        public void DistinctOperatorConstructedProperly()
        {
            var aNeqB = (a != b);

            ExpressionTestHelper.CheckExpressionWithChildren(
                aNeqB.Expression,
                ExpressionKind.Distinct,
                Sort.Bool,
                "(distinct a b)",
                a.Expression,
                b.Expression);
        }
示例#9
0
        public void GreaterThanOrEqualOperatorConstructedProperly()
        {
            var aGteB = a >= b;

            ExpressionTestHelper.CheckExpressionWithChildren(
                aGteB.Expression,
                ExpressionKind.GreaterThanOrEqual,
                Sort.Bool,
                "(>= a b)",
                a.Expression,
                b.Expression);
        }
示例#10
0
        public void LessThanOrEqualOperatorConstructedProperly()
        {
            var aLtB = a <= b;

            ExpressionTestHelper.CheckExpressionWithChildren(
                aLtB.Expression,
                ExpressionKind.LessThanOrEqual,
                Sort.Bool,
                "(<= a b)",
                a.Expression,
                b.Expression);
        }
示例#11
0
        public void SubtractOperatorConstructedProperly()
        {
            var aSubtractB = a - b;

            ExpressionTestHelper.CheckExpressionWithChildren(
                aSubtractB.Expression,
                ExpressionKind.Subtract,
                Sort.Int,
                "(- a b)",
                a.Expression,
                b.Expression);
        }
示例#12
0
        public void AddOperatorConstructedProperly()
        {
            var aAddB = a + b;

            ExpressionTestHelper.CheckExpressionWithChildren(
                aAddB.Expression,
                ExpressionKind.Add,
                Sort.Int,
                "(+ a b)",
                a.Expression,
                b.Expression);
        }
示例#13
0
        public void RemainderOperatorConstructedProperly()
        {
            var aRemainderB = a.Remainder(b);

            ExpressionTestHelper.CheckExpressionWithChildren(
                aRemainderB.Expression,
                ExpressionKind.Remainder,
                Sort.Int,
                "(rem a b)",
                a.Expression,
                b.Expression);
        }
示例#14
0
        public void DivideIntegerOperatorConstructedProperly()
        {
            var aDivideIntegerB = a / b;

            ExpressionTestHelper.CheckExpressionWithChildren(
                aDivideIntegerB.Expression,
                ExpressionKind.DivideInteger,
                Sort.Int,
                "(div a b)",
                a.Expression,
                b.Expression);
        }
示例#15
0
        public void OrOperatorConstructedProperly()
        {
            var aOrB = a || b;

            ExpressionTestHelper.CheckExpressionWithChildren(
                aOrB.Expression,
                ExpressionKind.Or,
                Sort.Bool,
                "(or a b)",
                a.Expression,
                b.Expression);
        }
示例#16
0
        public void EqualOperatorConstructedProperly()
        {
            var aEqB = (a == b);

            ExpressionTestHelper.CheckExpressionWithChildren(
                aEqB.Expression,
                ExpressionKind.Equal,
                Sort.Bool,
                "(= a b)",
                a.Expression,
                b.Expression);
        }
示例#17
0
        public void ModulusOperatorConstructedProperly()
        {
            var aModuloB = a % b;

            ExpressionTestHelper.CheckExpressionWithChildren(
                aModuloB.Expression,
                ExpressionKind.Modulus,
                Sort.Int,
                "(mod a b)",
                a.Expression,
                b.Expression);
        }
示例#18
0
        public void AndOperatorConstructedProperly()
        {
            var aAndB = a && b;

            ExpressionTestHelper.CheckExpressionWithChildren(
                aAndB.Expression,
                ExpressionKind.And,
                Sort.Bool,
                "(and a b)",
                a.Expression,
                b.Expression);
        }
示例#19
0
        public void XorOperatorConstructedProperly()
        {
            var aXorB = a ^ b;

            ExpressionTestHelper.CheckExpressionWithChildren(
                aXorB.Expression,
                ExpressionKind.Xor,
                Sort.Bool,
                "(xor a b)",
                a.Expression,
                b.Expression);
        }
示例#20
0
        public void ImpliesOperatorConstructedProperly()
        {
            var aImpliesB = a.Implies(b);

            ExpressionTestHelper.CheckExpressionWithChildren(
                aImpliesB.Expression,
                ExpressionKind.Implies,
                Sort.Bool,
                "(=> a b)",
                a.Expression,
                b.Expression);
        }
示例#21
0
        public void SelectConstructedProperly()
        {
            var selectAK = a.Select(k);

            ExpressionTestHelper.CheckExpressionWithChildren(
                selectAK.Expression,
                ExpressionKind.Select,
                Sort.Bool,
                "(select a k)",
                a.Expression,
                k.Expression);
        }
示例#22
0
        public void AndOperatorMergedProperly()
        {
            var andABC = a && b && c;

            ExpressionTestHelper.CheckExpressionWithChildren(
                andABC.Expression,
                ExpressionKind.And,
                Sort.Bool,
                "(and a b c)",
                a.Expression,
                b.Expression,
                c.Expression);
        }
示例#23
0
        public void AddOperatorMergedProperly()
        {
            var addABC = a + b + c;

            ExpressionTestHelper.CheckExpressionWithChildren(
                addABC.Expression,
                ExpressionKind.Add,
                Sort.Int,
                "(+ a b c)",
                a.Expression,
                b.Expression,
                c.Expression);
        }
示例#24
0
        public void IfThenElseOperatorConstructedProperly()
        {
            var ifAThenBElseC = a.IfThenElse(b, c);

            ExpressionTestHelper.CheckExpressionWithChildren(
                ifAThenBElseC.Expression,
                ExpressionKind.IfThenElse,
                Sort.Bool,
                "(ite a b c)",
                a.Expression,
                b.Expression,
                c.Expression);
        }
示例#25
0
        public void OrOperatorMergedProperly()
        {
            var orABC = a || b || c;

            ExpressionTestHelper.CheckExpressionWithChildren(
                orABC.Expression,
                ExpressionKind.Or,
                Sort.Bool,
                "(or a b c)",
                a.Expression,
                b.Expression,
                c.Expression);
        }
示例#26
0
        public void StoreConstructedProperly()
        {
            var storeAKV = a.Store(k, v);

            ExpressionTestHelper.CheckExpressionWithChildren(
                storeAKV.Expression,
                ExpressionKind.Store,
                arraySort,
                "(store a k v)",
                a.Expression,
                k.Expression,
                v.Expression);
        }
示例#27
0
        public void MultiplyOperatorMergedProperly()
        {
            var nultiplyABC = a * b * c;

            ExpressionTestHelper.CheckExpressionWithChildren(
                nultiplyABC.Expression,
                ExpressionKind.Multiply,
                Sort.Int,
                "(* a b c)",
                a.Expression,
                b.Expression,
                c.Expression);
        }
示例#28
0
        public void IfThenElseOperatorConstructedProperly()
        {
            var cond = (BoolHandle)ExpressionFactory.NamedVariable(Sort.Bool, "cond");

            var ifCondThenAElseB = cond.IfThenElse(a, b);

            ExpressionTestHelper.CheckExpressionWithChildren(
                ifCondThenAElseB.Expression,
                ExpressionKind.IfThenElse,
                Sort.Int,
                "(ite cond a b)",
                cond.Expression,
                a.Expression,
                b.Expression);
        }
示例#29
0
        public void NestedOperatorsWorkProperly()
        {
            var nested = (a && b && c) || (b == c) || b.Implies(c);

            var or = nested.Expression;

            ExpressionTestHelper.CheckExpression(
                or,
                ExpressionKind.Or,
                Sort.Bool,
                "(or (and a b c) (= b c) (=> b c))",
                3);

            var and = or.Children.ElementAt(0);

            ExpressionTestHelper.CheckExpressionWithChildren(
                and,
                ExpressionKind.And,
                Sort.Bool,
                "(and a b c)",
                a.Expression,
                b.Expression,
                c.Expression);

            var eq = or.Children.ElementAt(1);

            ExpressionTestHelper.CheckExpressionWithChildren(
                eq,
                ExpressionKind.Equal,
                Sort.Bool,
                "(= b c)",
                b.Expression,
                c.Expression);

            var implies = or.Children.ElementAt(2);

            ExpressionTestHelper.CheckExpressionWithChildren(
                implies,
                ExpressionKind.Implies,
                Sort.Bool,
                "(=> b c)",
                b.Expression,
                c.Expression);
        }
示例#30
0
        public void InterpretationConstructedProperly()
        {
            var trueVal = new BoolHandle(true);

            ExpressionTestHelper.CheckExpression(
                trueVal.Expression,
                ExpressionKind.Interpretation,
                Sort.Bool,
                true.ToString(),
                0);
            Assert.AreEqual(ExpressionFactory.True, trueVal.Expression);

            BoolHandle falseVal = false;

            ExpressionTestHelper.CheckExpression(
                falseVal.Expression,
                ExpressionKind.Interpretation,
                Sort.Bool,
                false.ToString(),
                0);
            Assert.AreEqual(ExpressionFactory.False, falseVal.Expression);
        }