public void Build_ReturnsAllStatementHandlersNeededByBlockParser() { MockRepository mocks = new MockRepository(); IBlacklistManager blacklistManager = mocks.Stub <IBlacklistManager>(); IProblemPipe problemPipe = mocks.Stub <IProblemPipe>(); BlockParserContext blockParserContext = new BlockParserContext( problemPipe, Fragment.CreateNamed("returnFragmentType"), new List <ReturnCondition>(), blacklistManager, delegate { }); StatementHandlerDictionaryBuilder builder = new StatementHandlerDictionaryBuilder(blockParserContext); Dictionary <Type, IStatementHandler> handlers = builder.Build(); bool assignmentStatementSupported = handlers.ContainsKey(typeof(AssignmentStatement)); bool branchSupported = handlers.ContainsKey(typeof(Branch)); bool expressionStatementSupported = handlers.ContainsKey(typeof(ExpressionStatement)); bool returnNodeSupported = handlers.ContainsKey(typeof(ReturnNode)); bool switchInstructionSupported = handlers.ContainsKey(typeof(SwitchInstruction)); bool necessaryHandlersSupported = assignmentStatementSupported && branchSupported && expressionStatementSupported && returnNodeSupported && switchInstructionSupported; bool correctHandlerCount = handlers.Keys.Count == 5; Assert.That(necessaryHandlersSupported && correctHandlerCount, Is.True); }
public BlockParser( IBlacklistManager blacklistManager, IProblemPipe problemPipe, Fragment returnFragmentType, List <ReturnCondition> returnConditions) { _blacklistManager = ArgumentUtility.CheckNotNull("blacklistManager", blacklistManager); _problemPipe = ArgumentUtility.CheckNotNull("typeParser", problemPipe); _returnFragmentType = returnFragmentType; _returnConditions = returnConditions; BlockParserContext blockParserContext = new BlockParserContext( _problemPipe, _returnFragmentType, _returnConditions, _blacklistManager, Inspect ); StatementHandlerDictionaryBuilder handlerBuilder = new StatementHandlerDictionaryBuilder(blockParserContext); _statementHandlers = handlerBuilder.Build(); _methodCallAnalyzer = new MethodCallAnalyzer(_problemPipe); }