public static void FilterDependencies() { var testData = new Dictionary <MemberInfo, ICollection <AssemblyInfo> >(); var userAsm1 = new AssemblyInfo() { AssemblyIdentity = "userAsm1, Version=1.0.0.0", FileVersion = "1.0.0.0", IsExplicitlySpecified = true }; var userAsm2 = new AssemblyInfo() { AssemblyIdentity = "userAsm2, Version=2.0.0.0", FileVersion = "2.0.0.0", IsExplicitlySpecified = true }; var userAsm3 = new AssemblyInfo() { AssemblyIdentity = "userAsm3, Version=3.0.0.0", FileVersion = "3.0.0.0" }; var mi0 = new MemberInfo() { DefinedInAssemblyIdentity = "System.Drawing, Version=1.0.136.0, PublicKeyToken=b03f5f7f11d50a3a", MemberDocId = "T:System.Drawing.Color" }; var mi1 = new MemberInfo() { DefinedInAssemblyIdentity = "System.Drawing, Version=1.0.136.0, PublicKeyToken=b03f5f7f11d50a3a", MemberDocId = "T:System.Drawing.Brush" }; var mi2 = new MemberInfo() { DefinedInAssemblyIdentity = "System.Data, Version=1.0.136.0, PublicKeyToken=b77a5c561934e089", MemberDocId = "T:System.Data.SqlTypes.SqlBoolean" }; testData.Add(mi0, new List <AssemblyInfo>() { userAsm1 }); var usedIn1 = new HashSet <AssemblyInfo>() { userAsm1, userAsm2 }; testData.Add(mi1, usedIn1); var usedIn2 = new HashSet <AssemblyInfo>() { userAsm2, userAsm3 }; testData.Add(mi2, usedIn2); var targets = new List <FrameworkName>() { new FrameworkName("Windows Phone, version=8.1") }; var engine = new AnalysisEngine(Substitute.For <IApiCatalogLookup>(), Substitute.For <IApiRecommendations>(), Substitute.For <IPackageFinder>()); var assembliesToRemove = new[] { userAsm1.AssemblyIdentity, userAsm2.AssemblyIdentity }; var result = engine.FilterDependencies(testData, assembliesToRemove); Assert.False(result.ContainsKey(mi0)); Assert.False(result.ContainsKey(mi1)); Assert.True(result.ContainsKey(mi2)); var mi2_usedIn = result[mi2]; Assert.True(mi2_usedIn.Contains(userAsm3) && !mi2_usedIn.Contains(userAsm2)); }