public void GetResult_ParameterizedMethodSymbolTableBuiltWithNonOverlappingEnvironment_FragmentParameterIsOfCorrectFragmentType() { Method sampleMethod = TestHelper.GetSample <SymbolTableBuilderSample>("ParameterizedMethod", _floatType, _objectType); EmbeddedInitialSymbolTableBuilder embeddedInitialSymbolTableBuilder = new EmbeddedInitialSymbolTableBuilder(sampleMethod, _blacklistManager, _environment); ISymbolTable resultSymbolTable = embeddedInitialSymbolTableBuilder.GetResult(); Assert.That(resultSymbolTable.GetFragmentType("fragmentParameter"), Is.EqualTo(Fragment.CreateNamed("FragmentType"))); }
public void GetResult_ParameterizedMethodSymbolTableBuiltWithEmptyEnvironment_NonFragmentFieldIsEmptyFragment() { Method sampleMethod = TestHelper.GetSample <SymbolTableBuilderSample>("ParameterizedMethod", _floatType, _objectType); EmbeddedInitialSymbolTableBuilder embeddedInitialSymbolTableBuilder = new EmbeddedInitialSymbolTableBuilder(sampleMethod, _blacklistManager, _environment); ISymbolTable resultSymbolTable = embeddedInitialSymbolTableBuilder.GetResult(); Assert.That(resultSymbolTable.GetFragmentType("_nonFragmentField"), Is.EqualTo(Fragment.CreateEmpty())); }
public void GetResult_ParameterizedMethodSymbolTableBuiltWithEmptyEnvironment_UnknownSymbolIsEmptyFragment() { Method sampleMethod = TestHelper.GetSample<SymbolTableBuilderSample>("ParameterizedMethod", _floatType, _objectType); EmbeddedInitialSymbolTableBuilder embeddedInitialSymbolTableBuilder = new EmbeddedInitialSymbolTableBuilder(sampleMethod, _blacklistManager, _environment); ISymbolTable resultSymbolTable = embeddedInitialSymbolTableBuilder.GetResult(); Assert.That(resultSymbolTable.GetFragmentType("unknownSymbol"), Is.EqualTo(Fragment.CreateEmpty())); }
public void GetResult_ParameterizedMethodSymbolTableBuiltWithNonOverlappingEnvironment_EnvironmentSymbolIsPropagated() { Method sampleMethod = TestHelper.GetSample<SymbolTableBuilderSample>("ParameterizedMethod", _floatType, _objectType); EmbeddedInitialSymbolTableBuilder embeddedInitialSymbolTableBuilder = new EmbeddedInitialSymbolTableBuilder(sampleMethod, _blacklistManager, _environment); _environment.MakeSafe("environmentSymbol",Fragment.CreateNamed( "DummyType")); ISymbolTable resultSymbolTable = embeddedInitialSymbolTableBuilder.GetResult(); Assert.That(resultSymbolTable.GetFragmentType("environmentSymbol"), Is.EqualTo(Fragment.CreateNamed("DummyType"))); }
public void GetResult_ParameterizedMethodSymbolTableBuiltWithOverlappingNonFragmentField_EnvironmentSymbolIsPropagated() { Method sampleMethod = TestHelper.GetSample <SymbolTableBuilderSample>("ParameterizedMethod", _floatType, _objectType); EmbeddedInitialSymbolTableBuilder embeddedInitialSymbolTableBuilder = new EmbeddedInitialSymbolTableBuilder(sampleMethod, _blacklistManager, _environment); _environment.MakeSafe("_nonFragmentField", Fragment.CreateNamed("OverlappingType")); ISymbolTable resultSymbolTable = embeddedInitialSymbolTableBuilder.GetResult(); Assert.That(resultSymbolTable.GetFragmentType("_nonFragmentField"), Is.EqualTo(Fragment.CreateNamed("OverlappingType"))); }
public void GetResult_ParameterizedMethodSymbolTableBuiltWithOverlappingEnvironment_FragmentFieldIsEmptyFragment() { Method sampleMethod = TestHelper.GetSample <SymbolTableBuilderSample>("ParameterizedMethod", _floatType, _objectType); EmbeddedInitialSymbolTableBuilder embeddedInitialSymbolTableBuilder = new EmbeddedInitialSymbolTableBuilder(sampleMethod, _blacklistManager, _environment); _environment.MakeSafe("_fragmentField", Fragment.CreateNamed("ThisShouldBeIgnored")); ISymbolTable resultSymbolTable = embeddedInitialSymbolTableBuilder.GetResult(); Assert.That(resultSymbolTable.GetFragmentType("_fragmentField"), Is.EqualTo(Fragment.CreateEmpty())); }
protected override void HandleStatement(HandleContext context) { AssignmentStatement assignmentStatement = (AssignmentStatement) context.Statement; if(!CoversAssignment(assignmentStatement)) return; Method assignedMethod = GetAssignedDelegateMethod (assignmentStatement); DelegateNode sourceDelegateType = (DelegateNode) assignmentStatement.Source.Type; Fragment returnFragment = GetDelegateTypesReturnFragment (sourceDelegateType); ISymbolTable environment = GetDelegatesEnvironment (sourceDelegateType); IMethodGraphAnalyzer methodParser = new MethodGraphAnalyzer (_blockParserContext.ProblemPipe); IMethodGraphBuilder methodGraphBuilder = new MethodGraphBuilder (assignedMethod, _blockParserContext.BlacklistManager, _blockParserContext.ProblemPipe, returnFragment); IInitialSymbolTableBuilder parameterSymbolTableBuilder = new EmbeddedInitialSymbolTableBuilder (assignedMethod, _blockParserContext.BlacklistManager, environment); methodParser.Parse (methodGraphBuilder, parameterSymbolTableBuilder); }
protected override void HandleStatement(HandleContext context) { AssignmentStatement assignmentStatement = (AssignmentStatement)context.Statement; if (!CoversAssignment(assignmentStatement)) { return; } Method assignedMethod = GetAssignedDelegateMethod(assignmentStatement); DelegateNode sourceDelegateType = (DelegateNode)assignmentStatement.Source.Type; Fragment returnFragment = GetDelegateTypesReturnFragment(sourceDelegateType); ISymbolTable environment = GetDelegatesEnvironment(sourceDelegateType); IMethodGraphAnalyzer methodParser = new MethodGraphAnalyzer(_blockParserContext.ProblemPipe); IMethodGraphBuilder methodGraphBuilder = new MethodGraphBuilder(assignedMethod, _blockParserContext.BlacklistManager, _blockParserContext.ProblemPipe, returnFragment); IInitialSymbolTableBuilder parameterSymbolTableBuilder = new EmbeddedInitialSymbolTableBuilder(assignedMethod, _blockParserContext.BlacklistManager, environment); methodParser.Parse(methodGraphBuilder, parameterSymbolTableBuilder); }
public void GetResult_ParameterizedMethodSymbolTableBuiltWithNonOverlappingEnvironment_FragmentFieldIsEmptyFragment() { Method sampleMethod = TestHelper.GetSample<SymbolTableBuilderSample>("ParameterizedMethod", _floatType, _objectType); EmbeddedInitialSymbolTableBuilder embeddedInitialSymbolTableBuilder = new EmbeddedInitialSymbolTableBuilder(sampleMethod, _blacklistManager, _environment); _environment.MakeSafe("_nonFragmentField", Fragment.CreateNamed("ThisShouldBeIgnored")); ISymbolTable resultSymbolTable = embeddedInitialSymbolTableBuilder.GetResult(); Assert.That(resultSymbolTable.GetFragmentType("_fragmentField"), Is.EqualTo(Fragment.CreateEmpty())); }