private void RunDependencyWalkerFaultInjection(MockTypeLibrariesFailurePoints failurePoint, MockTypeLib mainTypeLib, MockTypeLib dependencyTypeLibGood1, MockTypeLib dependencyTypeLibBad1, MockTypeLib dependencyTypeLibGood2, MockTypeLib dependencyTypeLibBad2) { ComDependencyWalker walker = new ComDependencyWalker(new MarshalReleaseComObject(MockReleaseComObject)); walker.AnalyzeTypeLibrary(mainTypeLib); // Did the current failure point get hit for this test? If not then no point in checking anything // The previous test (FaultInjectionMainLib) ensures that all defined failure points actually // cause some sort of trouble if (walker.EncounteredProblems.Count > 0) { TYPELIBATTR[] dependencies = walker.GetDependencies(); AssertDependenciesContainTypeLib("Test failed for failure point " + failurePoint.ToString(), dependencies, mainTypeLib, true); AssertDependenciesContainTypeLib("Test failed for failure point " + failurePoint.ToString(), dependencies, dependencyTypeLibGood1, true); AssertDependenciesContainTypeLib("Test failed for failure point " + failurePoint.ToString(), dependencies, dependencyTypeLibGood2, true); AssertDependenciesContainTypeLib("Test failed for failure point " + failurePoint.ToString(), dependencies, dependencyTypeLibBad1, false); AssertDependenciesContainTypeLib("Test failed for failure point " + failurePoint.ToString(), dependencies, dependencyTypeLibBad2, false); } mainTypeLib.AssertAllHandlesReleased(); dependencyTypeLibGood1.AssertAllHandlesReleased(); dependencyTypeLibGood2.AssertAllHandlesReleased(); dependencyTypeLibBad1.AssertAllHandlesReleased(); dependencyTypeLibBad2.AssertAllHandlesReleased(); }
public void FullDependenciesWithIncrementalAnalysis() { MockTypeLib mainTypeLib1, mainTypeLib2, mainTypeLib3, dependencyTypeLib1, dependencyTypeLib2, dependencyTypeLib3; CreateTwoTypeLibs(out mainTypeLib1, out dependencyTypeLib1); CreateTwoTypeLibs(out mainTypeLib2, out dependencyTypeLib2); CreateTwoTypeLibs(out mainTypeLib3, out dependencyTypeLib3); mainTypeLib1.ContainedTypeInfos[0].DefinesVariable(dependencyTypeLib1.ContainedTypeInfos[0]); mainTypeLib2.ContainedTypeInfos[0].DefinesVariable(dependencyTypeLib1.ContainedTypeInfos[0]); mainTypeLib2.ContainedTypeInfos[0].DefinesVariable(dependencyTypeLib2.ContainedTypeInfos[0]); mainTypeLib3.ContainedTypeInfos[0].DefinesVariable(dependencyTypeLib1.ContainedTypeInfos[0]); mainTypeLib3.ContainedTypeInfos[0].DefinesVariable(dependencyTypeLib3.ContainedTypeInfos[0]); ComDependencyWalker walker = new ComDependencyWalker(MockReleaseComObject); walker.AnalyzeTypeLibrary(mainTypeLib1); TYPELIBATTR[] dependencies = walker.GetDependencies(); ICollection <string> analyzedTypes = walker.GetAnalyzedTypeNames(); AssertDependenciesContainTypeLib(dependencies, dependencyTypeLib1, true); AssertDependenciesContainTypeLib(dependencies, dependencyTypeLib2, false); AssertDependenciesContainTypeLib(dependencies, dependencyTypeLib3, false); Assert.Equal(2, analyzedTypes.Count); walker.ClearDependencyList(); walker.AnalyzeTypeLibrary(mainTypeLib2); dependencies = walker.GetDependencies(); analyzedTypes = walker.GetAnalyzedTypeNames(); AssertDependenciesContainTypeLib(dependencies, dependencyTypeLib1, true); AssertDependenciesContainTypeLib(dependencies, dependencyTypeLib2, true); AssertDependenciesContainTypeLib(dependencies, dependencyTypeLib3, false); Assert.Equal(4, analyzedTypes.Count); walker.ClearDependencyList(); walker.AnalyzeTypeLibrary(mainTypeLib3); dependencies = walker.GetDependencies(); analyzedTypes = walker.GetAnalyzedTypeNames(); AssertDependenciesContainTypeLib(dependencies, dependencyTypeLib1, true); AssertDependenciesContainTypeLib(dependencies, dependencyTypeLib2, false); AssertDependenciesContainTypeLib(dependencies, dependencyTypeLib3, true); Assert.Equal(6, analyzedTypes.Count); }
public void WalkTypeInfosInEmptyLibrary() { MockTypeLib typeLib = new MockTypeLib(); ComDependencyWalker walker = new ComDependencyWalker(new MarshalReleaseComObject(MockReleaseComObject)); walker.AnalyzeTypeLibrary(typeLib); Assert.Equal(0, walker.GetDependencies().GetLength(0)); typeLib.AssertAllHandlesReleased(); }
private TYPELIBATTR[] RunDependencyWalker(MockTypeLib mainTypeLib, MockTypeLib dependencyTypeLib, bool dependencyShouldBePresent) { ComDependencyWalker walker = new ComDependencyWalker(new MarshalReleaseComObject(MockReleaseComObject)); walker.AnalyzeTypeLibrary(mainTypeLib); TYPELIBATTR[] dependencies = walker.GetDependencies(); // types from the main type library should be in the dependency list AssertDependenciesContainTypeLib(dependencies, mainTypeLib, true); AssertDependenciesContainTypeLib(dependencies, dependencyTypeLib, dependencyShouldBePresent); mainTypeLib.AssertAllHandlesReleased(); dependencyTypeLib.AssertAllHandlesReleased(); return(dependencies); }