コード例 #1
0
        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));
        }