public void EmptyProject() { var assemblyToTest = TestAssembly.Create("EmptyProject.cs"); var expected = EmptyProjectMemberDocId(); var filter = new AlwaysTrueDependencyFilter(); var dependencyFinder = new ReflectionMetadataDependencyFinder(filter, new SystemObjectFinder(filter)); var progressReporter = Substitute.For <IProgressReporter>(); var dependencies = dependencyFinder.FindDependencies(new[] { assemblyToTest }, progressReporter); var foundDocIds = dependencies .Dependencies .Select(o => Tuple.Create(o.Key.MemberDocId, o.Value.Count)) .OrderBy(o => o.Item1, StringComparer.Ordinal) .ToList(); var expectedOrdered = expected .OrderBy(o => o.Item1, StringComparer.Ordinal) .ToList(); Assert.Equal(expectedOrdered.Count, foundDocIds.Count); foreach (var combined in expectedOrdered.Zip(foundDocIds, Tuple.Create)) { var expectedItem = combined.Item1; var actualItem = combined.Item2; Assert.Equal(expectedItem.Item1, actualItem.Item1); Assert.Equal(expectedItem.Item2, actualItem.Item2); } }
private void TestForDocIdHelper(string source, string docid, bool allowUnsafe) { var filter = new AlwaysTrueDependencyFilter(); var dependencyFinder = new ReflectionMetadataDependencyFinder(filter, new SystemObjectFinder(filter)); var assemblyToTest = TestAssembly.Create(source, allowUnsafe); var progressReporter = Substitute.For <IProgressReporter>(); var dependencies = dependencyFinder.FindDependencies(new[] { assemblyToTest }, progressReporter); foreach (var dependency in dependencies.Dependencies) { if (string.Equals(dependency.Key.MemberDocId, docid, StringComparison.Ordinal)) { return; } } _output.WriteLine("Found docids:"); _output.WriteLine(string.Join(Environment.NewLine, dependencies.Dependencies.Select(o => o.Key.MemberDocId).OrderBy(o => o))); Assert.True(false, ((FormattableString)$"Could not find docid '{docid}'").ToString(CultureInfo.CurrentCulture)); }
public void UnresolvedAssemblyTest() { var filter = new AlwaysTrueDependencyFilter(); var finder = new ReflectionMetadataDependencyFinder(filter, new SystemObjectFinder(filter)); var progressReport = Substitute.For <IProgressReporter>(); var path = this.GetType().GetTypeInfo().Assembly.Location; var referencedAssemblies = this.GetType().GetTypeInfo().Assembly.GetReferencedAssemblies() .Select(a => a.ToString()) .OrderBy(a => a) .ToList(); var testInfo = new FilePathAssemblyFile(path); var dependencies = finder.FindDependencies(new[] { testInfo }, progressReport); var actual = dependencies.UnresolvedAssemblies .Select(u => u.Key) .OrderBy(u => u); _log.WriteLine("Actual unresolved assemblies:"); foreach (var assembly in actual) { _log.WriteLine(assembly); } Assert.Equal(referencedAssemblies.Count(), actual.Count()); // Use this instead of Assert.Equal so it will output the missing item foreach (var items in actual.Zip(referencedAssemblies, Tuple.Create)) { Assert.Equal(items.Item1, items.Item2); } Assert.True(dependencies.UnresolvedAssemblies.All(o => o.Value.Count == 1)); // Make sure no issues were found progressReport.Received(0).ReportIssue(Arg.Any <string>()); }