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); }
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); }
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); }
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); }
public void DistinctOperatorNestedProperly() { var aNeqBNeqC = (a != b != c); ExpressionTestHelper.CheckExpression( aNeqBNeqC.Expression, ExpressionKind.Distinct, Sort.Bool, "(distinct (distinct a b) c)", 2); var aNeqB = aNeqBNeqC.Expression.Children.ElementAt(0); ExpressionTestHelper.CheckExpressionWithChildren( aNeqB, ExpressionKind.Distinct, Sort.Bool, "(distinct a b)", a.Expression, b.Expression); Assert.AreEqual(c.Expression, aNeqBNeqC.Expression.Children.ElementAt(1)); }
public void NestedOperatorsWorkProperly() { var nested = (a == b) || (b >= a + a * c + a / b); var or = nested.Expression; ExpressionTestHelper.CheckExpression( or, ExpressionKind.Or, Sort.Bool, "(or (= a b) (>= b (+ a (* a c) (div a b))))", 2); var eq = or.Children.ElementAt(0); ExpressionTestHelper.CheckExpressionWithChildren( eq, ExpressionKind.Equal, Sort.Bool, "(= a b)", a.Expression, b.Expression); var geq = or.Children.ElementAt(1); ExpressionTestHelper.CheckExpression( geq, ExpressionKind.GreaterThanOrEqual, Sort.Bool, "(>= b (+ a (* a c) (div a b)))", 2); Assert.AreEqual(b.Expression, geq.Children.ElementAt(0)); var add = geq.Children.ElementAt(1); ExpressionTestHelper.CheckExpression( add, ExpressionKind.Add, Sort.Int, "(+ a (* a c) (div a b))", 3); Assert.AreEqual(a.Expression, add.Children.ElementAt(0)); var mul = add.Children.ElementAt(1); ExpressionTestHelper.CheckExpressionWithChildren( mul, ExpressionKind.Multiply, Sort.Int, "(* a c)", a.Expression, c.Expression); var div = add.Children.ElementAt(2); ExpressionTestHelper.CheckExpressionWithChildren( div, ExpressionKind.DivideInteger, Sort.Int, "(div a b)", a.Expression, b.Expression); }