public void TestAddNode() { // create some nodes and initialize graph BlurNode blur0 = new BlurNode(); BlurNode blur1 = new BlurNode(); BlurNode blur2 = new BlurNode(); BlurNode blur3 = new BlurNode(); BlurNode blur4 = new BlurNode(); NoiseInputNode noise0 = new NoiseInputNode(); NoiseInputNode noise1 = new NoiseInputNode(); PipelineGraph graph = new PipelineGraph(); graph.AddNode(blur0); graph.AddNode(blur1); graph.AddNode(noise0); graph.AddNode(blur2); graph.AddNode(noise1); Assert.Equal("Blur", blur0.Name); Assert.Equal("Blur 2", blur1.Name); Assert.Equal("Blur 3", blur2.Name); Assert.Equal("Noise", noise0.Name); Assert.Equal("Noise 2", noise1.Name); graph.RemoveNode(blur1); graph.AddNode(blur3); graph.AddNode(blur4); Assert.Equal("Blur 2", blur3.Name); Assert.Equal("Blur 4", blur4.Name); }
public PipelineGraph BuildPipeline() { // Create the pipeline pipelineGraph var graph = new PipelineGraph(); // Create the pipeline nodes var getGameObjects = new PP_GameObjectCollector(); var meshRendererFilter = new PP_FilterByComponent <Renderer>(); var removeOldCollider = new PP_RemoveComponents <Collider>(); var addCollider = new PP_AddCollider(); // Add nodes to pipelineGraph graph.AddNode(getGameObjects); graph.AddNode(meshRendererFilter); graph.AddNode(removeOldCollider); graph.AddNode(addCollider); // Add node connections getGameObjects.AddFollowupStep(meshRendererFilter); meshRendererFilter.AddFollowupStep(removeOldCollider); removeOldCollider.AddFollowupStep(addCollider); // removeOldCollider doesn't need a followup step, as it is the last node return(graph); }
private void writeConfigurationAndValidate(DoctorReport report, PluginGraph graph) { var pipelineGraph = new PipelineGraph(graph); var writer = new WhatDoIHaveWriter(pipelineGraph); report.WhatDoIHave = writer.GetText(); var session = new ValidationBuildSession(pipelineGraph, graph.InterceptorLibrary); session.PerformValidations(); if (session.HasBuildErrors()) { report.Result = DoctorResult.BuildErrors; } else if (session.HasValidationErrors()) { report.Result = DoctorResult.ValidationErrors; } if (!session.Success) { report.ErrorMessages = session.BuildErrorMessages(); } }
public void DfsFindsCorrectNodes() { // create graph AnonymousNode node0 = new AnonymousNode() { Name = "node0" }; AnonymousNode node1 = new AnonymousNode() { Name = "node1" }; AnonymousNode node2 = new AnonymousNode(node0) { Name = "node2" }; AnonymousNode node3 = new AnonymousNode(node0, node1) { Name = "node3" }; AnonymousNode node4 = new AnonymousNode(node3) { Name = "node4" }; PipelineGraph graph = new PipelineGraph { Nodes = { node0, node1, node2, node3, node4 } }; Assert.Contains <Node>(node0, graph.DepthFirstSearch(node4)); Assert.Contains <Node>(node1, graph.DepthFirstSearch(node4)); Assert.DoesNotContain <Node>(node2, graph.DepthFirstSearch(node4)); Assert.DoesNotContain <Node>(node4, graph.DepthFirstSearch(node3)); }
public ObjectBuilder(PipelineGraph pipeline, InterceptorLibrary library) { if (pipeline == null) throw new ArgumentNullException("pipeline"); _pipeline = pipeline; _library = library; }
public void SetUp() { family = new PluginFamily(typeof(IService <>)); PluginGraph.CreateRoot("something").AddFamily(family); configuration = new GenericFamilyConfiguration(family, PipelineGraph.BuildEmpty()); }
public void PipelineGraphCanDetectCycles() { // create graph AnonymousNode node0 = new AnonymousNode() { Name = "node0" }; AnonymousNode node1 = new AnonymousNode(node0) { Name = "node1" }; AnonymousNode node2 = new AnonymousNode(node1) { Name = "node2" }; AnonymousNode node3 = new AnonymousNode(node2) { Name = "node3" }; PipelineGraph graph = new PipelineGraph { Nodes = { node0, node1, node2, node3 } }; Assert.Equal(false, graph.AddEdge(node3.Outputs[0], node1.Inputs[0])); Assert.Equal(true, graph.AddEdge(node2.Outputs[0], node3.Inputs[0])); }
public void transient_cache_of_nested_pipeline_graph_is_a_stateful_cache() { var plugins = new PluginGraph(); var pipeline = PipelineGraph.BuildRoot(plugins); pipeline.ToNestedGraph().Transients.ShouldBeOfType <LifecycleObjectCache>(); }
public void transient_cache_by_default_is_a_nullo() { var plugins = PluginGraph.CreateRoot(); var pipeline = PipelineGraph.BuildRoot(plugins); pipeline.Transients.ShouldBeOfType <NulloTransientCache>(); }
public void transient_cache_of_nested_pipeline_graph_is_a_stateful_cache() { var plugins = PluginGraph.CreateRoot(); var pipeline = PipelineGraph.BuildRoot(plugins); pipeline.ToNestedGraph().Transients.ShouldBeOfType <ContainerSpecificObjectCache>(); }
public void SetUp() { graph = new PluginGraph(); pipeline = new PipelineGraph(graph); library = new InterceptorLibrary(); builder = new ObjectBuilder(pipeline, library); }
public void build_root_for_default_tracking_style() { var pluginGraph = PluginGraph.CreateRoot(); pluginGraph.TransientTracking = TransientTracking.DefaultNotTrackedAtRoot; var graph = PipelineGraph.BuildRoot(pluginGraph); graph.Transients.ShouldBeOfType <NulloTransientCache>(); }
public void build_root_for_tracked_transients() { var pluginGraph = PluginGraph.CreateRoot(); pluginGraph.TransientTracking = TransientTracking.ExplicitReleaseMode; var graph = PipelineGraph.BuildRoot(pluginGraph); graph.Transients.ShouldBeOfType <TrackingTransientCache>(); }
public void default_lifecycle_not_set_on_any_level() { var graph = PluginGraph.CreateRoot(); var pipeline = PipelineGraph.BuildRoot(graph).Profiles.For("Red"); pipeline.Instances.DefaultLifecycleFor(typeof(IGateway)) .ShouldBeNull(); }
public ObjectBuilder(PipelineGraph pipeline, InterceptorLibrary library) { if (pipeline == null) { throw new ArgumentNullException("pipeline"); } _pipeline = pipeline; _library = library; }
public void singleton_is_just_the_plugin_graph_singletons() { var plugins = PluginGraph.CreateRoot(); plugins.SingletonCache.ShouldNotBeNull(); var pipeline = PipelineGraph.BuildRoot(plugins); pipeline.Singletons.ShouldBeTheSameAs(plugins.SingletonCache); }
public void Throw_200_When_trying_to_build_an_instance_that_cannot_be_found() { var graph = new PipelineGraph(new PluginGraph()); assertActionThrowsErrorCode(200, delegate { var session = new BuildSession(graph, null); session.CreateInstance(typeof(IGateway), "Gateway that is not configured"); }); }
public void When_calling_CreateInstance_if_no_default_can_be_found_throw_202() { var graph = new PipelineGraph(new PluginGraph()); assertActionThrowsErrorCode(202, delegate { var session = new BuildSession(graph, null); session.CreateInstance(typeof(IGateway)); }); }
public void Throw_exception_When_trying_to_build_an_instance_that_cannot_be_found() { var graph = PipelineGraph.BuildEmpty(); var ex = Exception <StructureMapConfigurationException> .ShouldBeThrownBy(() => { var session = new BuildSession(graph); session.CreateInstance(typeof(IGateway), "Gateway that is not configured"); }); ex.Title.ShouldEqual("Could not find an Instance named 'Gateway that is not configured' for PluginType StructureMap.Testing.Widget3.IGateway"); }
public void lifecyle_for_pluginType_not_explicitly_set_falls_back_to_parent() { var graph = PluginGraph.CreateRoot(); graph.Families[typeof(IGateway)].SetLifecycleTo <SingletonLifecycle>(); var pipeline = PipelineGraph.BuildRoot(graph).Profiles.For("Red"); pipeline.Instances.DefaultLifecycleFor(typeof(IGateway)) .ShouldBeOfType <SingletonLifecycle>(); }
public void FindAPluginFamilyForAGenericTypeFromPluginTypeName() { Type serviceType = typeof(IService <string>); PluginGraph pluginGraph = PluginGraph.BuildGraphFromAssembly(serviceType.Assembly); var pipelineGraph = new PipelineGraph(pluginGraph); Type stringService = typeof(IService <string>); IInstanceFactory factory = pipelineGraph.ForType(stringService); Assert.AreEqual(stringService, factory.PluginType); }
public void lifecycle_for_pluginType_explicitly_set() { var graph = new PluginGraph(); var profile = graph.Profile("Red"); profile.Families[typeof(IGateway)].SetLifecycleTo <SingletonLifecycle>(); var pipeline = PipelineGraph.BuildRoot(graph).Profiles.For("Red"); pipeline.Instances.DefaultLifecycleFor(typeof(IGateway)) .ShouldBeOfType <SingletonLifecycle>(); }
public void When_calling_GetInstance_if_no_default_can_be_found_throw_202() { var graph = PipelineGraph.BuildEmpty(); var ex = Exception <StructureMapConfigurationException> .ShouldBeThrownBy(() => { var session = new BuildSession(graph); session.GetInstance(typeof(IGateway)); }); ex.Context.ShouldContain("There is no configuration specified for StructureMap.Testing.Widget3.IGateway"); ex.Title.ShouldEqual("No default Instance is registered and cannot be automatically determined for type 'StructureMap.Testing.Widget3.IGateway'"); }
public void TestReturnNumberOfFramesToPrecompute() { // create graph AnonymousNode node0 = new AnonymousNode() { Name = "node0" }; AnonymousNode node1 = new AnonymousNode() { Name = "node1" }; AnonymousNode node2 = new AnonymousNode(node0) { Name = "node2" }; AnonymousNode node3 = new AnonymousNode(node0, node1) { Name = "node3" }; AnonymousNode node4 = new AnonymousNode(node3) { Name = "node4" }; PipelineGraph graph = new PipelineGraph { Nodes = { node0, node1, node2, node3, node4 } }; //set number of frames to precompute in the graph's nodes node0.SettableNumberOfFramesToPrecompute = 0; node1.SettableNumberOfFramesToPrecompute = 1; node2.SettableNumberOfFramesToPrecompute = 2; node3.SettableNumberOfFramesToPrecompute = 4; node4.SettableNumberOfFramesToPrecompute = 8; List <AnonymousNode> nodeList = new List <AnonymousNode>(); nodeList.Add(node0); Assert.Equal(0, graph.NumberOfTicksToPrecompute(nodeList)); nodeList.Add(node1); Assert.Equal(1, graph.NumberOfTicksToPrecompute(nodeList)); nodeList.Add(node2); Assert.Equal(2, graph.NumberOfTicksToPrecompute(nodeList)); nodeList.Add(node3); Assert.Equal(5, graph.NumberOfTicksToPrecompute(nodeList)); nodeList.Add(node4); Assert.Equal(13, graph.NumberOfTicksToPrecompute(nodeList)); }
public void SetUp() { var registry = new Registry(); registry.BuildInstancesOf <Rule>(); registry.Scan(x => { x.Assembly("StructureMap.Testing.Widget"); x.Assembly("StructureMap.Testing.Widget2"); }); PluginGraph graph = registry.Build(); var pipelineGraph = new PipelineGraph(graph); _session = new BuildSession(pipelineGraph, graph.InterceptorLibrary); }
public void CanMakeAClassWithNoConstructorParametersWithoutADefinedMemento() { var registry = new Registry(); registry.Scan(x => x.Assembly("StructureMap.Testing.Widget3")); registry.BuildInstancesOf<IGateway>(); PluginGraph graph = registry.Build(); var pipelineGraph = new PipelineGraph(graph); var session = new BuildSession(graph); var gateway = (DefaultGateway) session.CreateInstance(typeof (IGateway), "Default"); Assert.IsNotNull(gateway); }
public void CanMakeAClassWithNoConstructorParametersWithoutADefinedMemento() { var registry = new Registry(); registry.Scan(x => x.Assembly("StructureMap.Testing.Widget3")); registry.BuildInstancesOf <IGateway>(); PluginGraph graph = registry.Build(); var pipelineGraph = new PipelineGraph(graph); var session = new BuildSession(graph); var gateway = (DefaultGateway)session.CreateInstance(typeof(IGateway), "Default"); Assert.IsNotNull(gateway); }
public void SetUp() { var registry = new Registry(); registry.ForRequestedType(typeof(IService <>)) .AddConcreteType(typeof(Service <>)) .AddConcreteType(typeof(Service2 <>)); registry.BuildInstancesOf <ISomething>() .TheDefaultIsConcreteType <SomethingOne>() .AddConcreteType <SomethingTwo>(); registry.BuildInstancesOf <IServiceProvider>().AddConcreteType <MyDataSet>().AddConcreteType <MyDataView>(); PluginGraph graph = registry.Build(); var pipeline = new PipelineGraph(graph); _model = new Container(graph).Model; _container = new Container(graph); }
public when_the_singleton_Lifecycle_ejects_all() { lifecycle = new SingletonLifecycle(); disposable1 = new StubDisposable(); disposable2 = new StubDisposable(); pipeline = PipelineGraph.BuildRoot(PluginGraph.CreateRoot()); lifecycle.FindCache(pipeline) .As <LifecycleObjectCache>() .Set(typeof(IGateway), new StubInstance("a"), disposable1); lifecycle.FindCache(pipeline) .As <LifecycleObjectCache>() .Set(typeof(IGateway), new StubInstance("b"), disposable2); lifecycle.FindCache(pipeline) .As <LifecycleObjectCache>() .Set(typeof(IGateway), new StubInstance("c"), new object()); lifecycle.EjectAll(pipeline); }
public void TestRemoveNode() { // create graph AnonymousNode node0 = new AnonymousNode() { Name = "node0" }; AnonymousNode node1 = new AnonymousNode() { Name = "node1" }; AnonymousNode node2 = new AnonymousNode(node0, node1) { Name = "node2" }; AnonymousNode node3 = new AnonymousNode(node2) { Name = "node3" }; AnonymousNode node4 = new AnonymousNode(node2) { Name = "node4" }; PipelineGraph graph = new PipelineGraph { Nodes = { node0, node1, node2, node3, node4 } }; graph.RemoveNode(node2); foreach (Node.Input input in node3.Inputs) { Assert.Equal(null, input.Source); } foreach (Node.Input input in node4.Inputs) { Assert.Equal(null, input.Source); } }
public void SetUp() { lifecycle = new SingletonLifecycle(); disposable1 = new StubDisposable(); disposable2 = new StubDisposable(); pipeline = PipelineGraph.BuildRoot(new PluginGraph()); lifecycle.FindCache(pipeline) .As <LifecycleObjectCache>() .Set(typeof(IGateway), new StubInstance("a"), disposable1); lifecycle.FindCache(pipeline) .As <LifecycleObjectCache>() .Set(typeof(IGateway), new StubInstance("b"), disposable2); lifecycle.FindCache(pipeline) .As <LifecycleObjectCache>() .Set(typeof(IGateway), new StubInstance("c"), new object()); lifecycle.EjectAll(pipeline); }
public InstanceFactoryTypeConfiguration(Type pluginType, IContainer container, PipelineGraph graph) { _pluginType = pluginType; _container = container; _graph = graph; }
public void SetUp() { var registry = new Registry(); registry.ForRequestedType(typeof (IService<>)) .AddConcreteType(typeof (Service<>)) .AddConcreteType(typeof (Service2<>)); registry.BuildInstancesOf<ISomething>() .TheDefaultIsConcreteType<SomethingOne>() .AddConcreteType<SomethingTwo>(); registry.BuildInstancesOf<IServiceProvider>().AddConcreteType<MyDataSet>().AddConcreteType<MyDataView>(); PluginGraph graph = registry.Build(); var pipeline = new PipelineGraph(graph); _model = new Container(graph).Model; _container = new Container(graph); }
public void When_calling_CreateInstance_if_no_default_can_be_found_throw_202() { var graph = new PipelineGraph(new PluginGraph()); assertActionThrowsErrorCode(202, delegate { var session = new BuildSession(graph, null); session.CreateInstance(typeof (IGateway)); }); }
public WhatDoIHaveWriter(PipelineGraph graph) { _graph = graph; }
public ValidationBuildSession(PipelineGraph pipelineGraph, InterceptorLibrary interceptorLibrary) : base(pipelineGraph, interceptorLibrary) { }
public void SetUp() { var registry = new Registry(); registry.BuildInstancesOf<Rule>(); registry.Scan(x => { x.Assembly("StructureMap.Testing.Widget"); x.Assembly("StructureMap.Testing.Widget2"); }); PluginGraph graph = registry.Build(); var pipelineGraph = new PipelineGraph(graph); _session = new BuildSession(pipelineGraph, graph.InterceptorLibrary); }
public void Throw_200_When_trying_to_build_an_instance_that_cannot_be_found() { var graph = new PipelineGraph(new PluginGraph()); assertActionThrowsErrorCode(200, delegate { var session = new BuildSession(graph, null); session.CreateInstance(typeof (IGateway), "Gateway that is not configured"); }); }