コード例 #1
0
        public void checkEqualityConstraint(object executor, Executor.BreakPointEventArgs data, Predicate <LiteralExpr> condition)
        {
            // Check that the equality constraint has been stored
            bool found = false;

            // Find the symbolic associated with variable "a".
            var theLocal = e.CurrentState.GetInScopeVariableAndExprByName("a");

            //var symbolic = e.CurrentState.Symbolics.Where( s => s.Origin.AsVariable == theLocal.Key).First();


            foreach (Expr constraint in e.CurrentState.Constraints.ConstraintExprs)
            {
                LiteralExpr literal  = null;
                Variable    symbolic = null;
                found = FindLiteralAssignment.findAnyVariable(constraint, out symbolic, out literal);
                if (found)
                {
                    Assert.IsInstanceOf <SymbolicVariable>(symbolic);
                    var asSym = symbolic as SymbolicVariable;
                    if (asSym.Origin.IsVariable && asSym.Origin.AsVariable == theLocal.Key)
                    {
                        Assert.IsTrue(condition(literal));
                        found = true;
                        break;
                    }
                }
            }
            Assert.IsTrue(found, "Equality constraint not found");
        }
コード例 #2
0
 public void checkConcrete(Object executor, Executor.BreakPointEventArgs eventArgs)
 {
     if (eventArgs.Name == "now_concrete")
     {
         Variable v = e.CurrentState.GetInScopeVariableAndExprByName("a").Key;
         Assert.IsFalse(e.IsSymbolic(v));
     }
 }
コード例 #3
0
        static public void handleBreakPoint(object executor, Executor.BreakPointEventArgs eventArgs)
        {
            Console.ForegroundColor = ConsoleColor.DarkMagenta;
            Console.WriteLine("Hit break point " + eventArgs.Name);

            if (Debugger.IsAttached)
            {
                Debugger.Break();
            }
            else
            {
                Console.WriteLine("Could not Break because debugger was not attached");
            }
            Console.ResetColor();
        }
コード例 #4
0
ファイル: Concretise.cs プロジェクト: ccadar/symbooglix
        public void checkConcrete(Object executor, Executor.BreakPointEventArgs eventArgs)
        {
            if (eventArgs.Name == "entry")
            {
                ++hits;

                // Check globals are symbolic
                foreach (Variable V in e.CurrentState.Mem.Globals.Keys)
                {
                    Assert.IsTrue(e.IsSymbolic(V));
                }

                // Check globals are symbolic
                foreach (Variable V in e.CurrentState.GetCurrentStackFrame().Locals.Keys)
                {
                    Assert.IsTrue(e.IsSymbolic(V));
                }

                return;
            }

            Assert.AreEqual(1, hits);
            Assert.AreEqual("now_concrete", eventArgs.Name);
            ++hits;

            // Check "a" is now concrete
            Variable varA = e.CurrentState.GetInScopeVariableAndExprByName("a").Key;

            Assert.IsFalse(e.IsSymbolic(varA));

            // Check "x" is now concrete
            Variable varX = e.CurrentState.GetInScopeVariableAndExprByName("x").Key;

            Assert.IsFalse(e.IsSymbolic(varX));

            // Check "y" is still symbolic
            Variable varY = e.CurrentState.GetInScopeVariableAndExprByName("y").Key;

            Assert.IsTrue(e.IsSymbolic(varY));
        }