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); }