public void SetUp()
 {
     _blacklistManager = new IDbCommandBlacklistManagerStub();
       _methodPreConditions = new SymbolTable (_blacklistManager);
       _methodPreConditions.MakeSafe ("x", Fragment.CreateNamed("SqlFragment"));
       _methodPreConditions.MakeSafe ("l", Fragment.CreateLiteral());
       _methodPreConditions.MakeUnsafe ("y");
       _problemPipeStub = new ProblemPipeStub();
       _methodGraphAnalyzer = new MethodGraphAnalyzer (_problemPipeStub);
       _mocks = new MockRepository();
       _methodGraph = _mocks.Stub<IMethodGraph>();
       _methodGraphBuilder = _mocks.Stub<IMethodGraphBuilder>();
       _parameterSymbolTableBuilder = _mocks.Stub<IInitialSymbolTableBuilder>();
 }
        public void Parse_SinkPreconditionsViolatedInTwoBranches_ReturnsProblem()
        {
            List<AssignabilityPreCondition> preConditions = new List<AssignabilityPreCondition> { new AssignabilityPreCondition("x", Fragment.CreateNamed("SqlFragment")) };
              SymbolTable postConditions = new SymbolTable (_blacklistManager);
              List<int> successors = new List<int> { 1, 2 };
              BasicBlock initialNode = new BasicBlock (0, preConditions.ToArray(), postConditions, successors.ToArray(), c_EmptyAssignments);

              preConditions = new List<AssignabilityPreCondition> { new AssignabilityPreCondition("x", Fragment.CreateNamed("SqlFragment")) };
              postConditions = new SymbolTable (_blacklistManager);
              postConditions.MakeUnsafe("x");
              successors = new List<int> { 3 };
              BasicBlock firstBranch = new BasicBlock (1, preConditions.ToArray(), postConditions, successors.ToArray(), c_EmptyAssignments);

              preConditions = new List<AssignabilityPreCondition> { new AssignabilityPreCondition("x", Fragment.CreateNamed("SqlFragment")) };
              postConditions = new SymbolTable (_blacklistManager);
              postConditions.MakeUnsafe("x");
              successors = new List<int> { 3 };
              BasicBlock secondBranch = new BasicBlock (2, preConditions.ToArray(), postConditions, successors.ToArray(), c_EmptyAssignments);

              preConditions = new List<AssignabilityPreCondition> { new AssignabilityPreCondition("x", Fragment.CreateNamed("SqlFragment")) };
              postConditions = new SymbolTable (_blacklistManager);
              successors = new List<int>();
              BasicBlock sink = new BasicBlock (3, preConditions.ToArray(), postConditions, successors.ToArray(), c_EmptyAssignments);

              using (_mocks.Record())
              {
            _methodGraph.IsEmpty();
            LastCall.Return (false);

            SetupResult.For (_methodGraph.InitialBlock)
                   .Return (initialNode);

            SetupResult.For(_methodGraph.Blocks)
                    .Return(new BasicBlock[] { initialNode, firstBranch, secondBranch, sink });

            _methodGraph.GetBasicBlockById (1);
            LastCall.Return (firstBranch);

            _methodGraph.GetBasicBlockById (2);
            LastCall.Return (secondBranch);

            _methodGraph.GetBasicBlockById (3);
            LastCall.Return (sink);

            _methodGraphBuilder.GetResult();
            LastCall.Return (_methodGraph);
            _parameterSymbolTableBuilder.GetResult();
            LastCall.Return(_methodPreConditions);
              }
              ProblemCollection result = ParseGraph();
              Assert.That (TestHelper.ContainsProblemID (c_InjectionCopRuleId, result), Is.True);
        }