static IAssembly GetAssemblyWithTypes(params IType[] types) { var assembly = new AssemblyStub("Test.Assembly.dll"); var module = new ModuleStub("Module1"); assembly.GetModulesHandler = () => new[] { module }; module.GetTypesHandler = () => types; return assembly; }
public void Should_add_node_with_assembly_name_as_label() { var digraph = EmptyGraph(); var graph = NewDependencyGraph(digraph); var assembly = new AssemblyStub("MyAssembly"); graph.Add(assembly); Assert.That(digraph.Nodes.Map(x => x.Label).ToList(), Is.EquivalentTo(new[]{ assembly.Name.Name})); }
public void Add_should_obey_filtering() { var digraph = EmptyGraph(); var graph = new AssemblyDependencyGraph(digraph, new AssemblyLoaderStub(), x => false); var assembly = new AssemblyStub("MyAssembly"); graph.Add(assembly); digraph.Nodes.ShouldBeEmpty(); }
public void Should_remember_current_assembly() { var handler = new TestHandler(); IAssembly activeAssembly = null; handler.OnBeginAssembly = x => activeAssembly = x; var assembly = new AssemblyStub("Test.Assembly"); handler.BeginAssembly(assembly); activeAssembly.ShouldBeSameAs(assembly); }
public void Should_add_referenced_assemblies() { var digraph = EmptyGraph(); var graph = NewDependencyGraph(digraph); var root = new AssemblyStub("RootAssembly"); var child1 = new AssemblyName("System"); var child2 = new AssemblyName("System.Xml"); root.GetReferencedAssembliesHandler = () => new []{ child1, child2}; graph.Add(root); Assert.That(digraph.Nodes.Map(x => x.Label).ToList(), Is.EquivalentTo(new[] { root.Name.Name, child1.Name, child2.Name })); }
public void Should_add_edges_from_dependant_to_dependee() { var digraph = EmptyGraph(); var graph = NewDependencyGraph(digraph); var root = new AssemblyStub("RootAssembly"); var child1 = new AssemblyName("System"); var child2 = new AssemblyName("System.Xml"); root.GetReferencedAssembliesHandler = () => new[] { child1, child2 }; graph.Add(root); Assert.That(digraph.Edges.Map(x => x.ToString()).ToList(), Is.EquivalentTo(new[] { "0->1", "0->2" })); }
public void Should_follow_dependency_chain() { var digraph = EmptyGraph(); var loader = new AssemblyLoaderStub(); var graph = new AssemblyDependencyGraph(digraph, loader); var root = new AssemblyStub("RootAssembly"); var systemXml = new AssemblyStub("System.Xml"); var system = new AssemblyName("System"); var loaded = new List<AssemblyName>(); loader.Loading += loaded.Add; loader.Add(systemXml); root.GetReferencedAssembliesHandler = () => new []{ systemXml.Name }; systemXml.GetReferencedAssembliesHandler = () => new []{ system }; graph.Add(root); Assert.That(loaded.Map(x => x.Name).ToList(), Is.EquivalentTo(new[] { system.Name, systemXml.Name.Name })); }
public void Should_handle_circular_dependencies() { var digraph = EmptyGraph(); var loader = new AssemblyLoaderStub(); var graph = new AssemblyDependencyGraph(digraph, loader); var system = new AssemblyStub("System"); var systemXml = new AssemblyStub("System.Xml"); system.GetReferencedAssembliesHandler = () => new[] { systemXml.Name }; systemXml.GetReferencedAssembliesHandler = () => new[] { system.Name }; loader.Add(system); loader.Add(systemXml); graph.Add(system); Assert.That(digraph.Edges.Map(x => x.ToString()).ToList(), Is.EquivalentTo(new[] { "0->1", "1->0" })); }
IAssembly GetAssemblyDependingOnSystem() { var assembly = new AssemblyStub("MyAssembly"); var system = new AssemblyName("System"); assembly.GetReferencedAssembliesHandler = () => new[] { system }; return assembly; }
public void Wont_add_children_twice() { var digraph = EmptyGraph(); var graph = NewDependencyGraph(digraph); var parent = new AssemblyStub("RootAssembly"); var child = new AssemblyName("System"); parent.GetReferencedAssembliesHandler = () => new[] { child }; graph.Add(parent); graph.Add(parent); Assert.That(digraph.Edges.Map(x => x.ToString()).ToList(), Is.EquivalentTo(new[] { "0->1" })); }
public void Should_not_add_same_assembly_twice() { var digraph = EmptyGraph(); var graph = NewDependencyGraph(digraph); var root1 = new AssemblyStub("Pencil.Build"); var root2 = new AssemblyStub("Pencil.Test"); var hub = new AssemblyName("Pencil.Core"); root1.GetReferencedAssembliesHandler = () => new[] { hub }; root2.GetReferencedAssembliesHandler = () => new[] { hub }; graph.Add(root1); graph.Add(root2); Assert.That(digraph.Edges.Map(x => x.ToString()).ToList(), Is.EquivalentTo(new[] { "0->1", "2->1" })); }