コード例 #1
0
ファイル: AssemblyReaderTests.cs プロジェクト: danaxa/Pencil
 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;
 }
コード例 #2
0
        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}));
        }
コード例 #3
0
        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();
        }
コード例 #4
0
ファイル: DefaultHandlerTests.cs プロジェクト: danaxa/Pencil
        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);
        }
コード例 #5
0
        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 }));
        }
コード例 #6
0
        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" }));
        }
コード例 #7
0
        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 }));
        }
コード例 #8
0
        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" }));
        }
コード例 #9
0
 IAssembly GetAssemblyDependingOnSystem()
 {
     var assembly = new AssemblyStub("MyAssembly");
     var system = new AssemblyName("System");
     assembly.GetReferencedAssembliesHandler = () => new[] { system };
     return assembly;
 }
コード例 #10
0
        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" }));
        }
コード例 #11
0
        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" }));
        }