Esempio n. 1
0
        public void Return_the_same_object_within_a_session_for_the_default_of_a_plugin_type()
        {
            var count = 0;

            var instance = new LambdaInstance <ColorRule>("counting", () =>
            {
                count++;
                return(new ColorRule("Red"));
            });
            var registry = new Registry();

            registry.For <ColorRule>().UseInstance(instance);

            var graph   = registry.Build();
            var session = BuildSession.ForPluginGraph(graph);


            var result1 = session.GetInstance(typeof(ColorRule));
            var result2 = session.GetInstance(typeof(ColorRule));
            var result3 = session.GetInstance(typeof(ColorRule));
            var result4 = session.GetInstance(typeof(ColorRule));

            count.ShouldBe(1);

            result1.ShouldBeTheSameAs(result2);
            result1.ShouldBeTheSameAs(result3);
            result1.ShouldBeTheSameAs(result4);
        }
        public void Read_in_a_class_with_primitive_arrays()
        {
            string xml = @"
<Instance>
    <numbers Values='1,2,3'/>
    <strings Values='1,2,3'/>
</Instance>
";

            XmlElement element = DataMother.BuildDocument(xml).DocumentElement;

            element.SetAttribute("PluggedType", typeof(ClassWithStringAndIntArray).AssemblyQualifiedName);

            var      memento  = new XmlAttributeInstanceMemento(element);
            var      graph    = new PluginGraph();
            Instance instance = memento.ReadInstance(new SimplePluginFactory(), typeof(ClassWithStringAndIntArray));

            var theObject = (ClassWithStringAndIntArray)instance.Build(typeof(ClassWithStringAndIntArray),
                                                                       BuildSession.ForPluginGraph(graph));

            theObject.Numbers.ShouldEqual(new[] { 1, 2, 3 });
            theObject.Strings.ShouldEqual(new[] { "1", "2", "3" });

            Debug.WriteLine(theObject.GetType().AssemblyQualifiedName);
        }
Esempio n. 3
0
        public void Return_the_same_object_within_a_session_for_the_default_of_a_plugin_type()
        {
            int count = 0;

            var instance = new LambdaInstance <ColorRule>(() =>
            {
                count++;
                return(new ColorRule("Red"));
            });
            var registry = new Registry();

            registry.For <ColorRule>().Use(instance);

            PluginGraph graph   = registry.Build();
            var         session = BuildSession.ForPluginGraph(graph);


            object result1 = session.GetInstance(typeof(ColorRule));
            object result2 = session.GetInstance(typeof(ColorRule));
            object result3 = session.GetInstance(typeof(ColorRule));
            object result4 = session.GetInstance(typeof(ColorRule));

            Assert.AreEqual(1, count);

            Assert.AreSame(result1, result2);
            Assert.AreSame(result1, result3);
            Assert.AreSame(result1, result4);
        }
Esempio n. 4
0
        public void when_retrieving_with_try_get_instance_with_nongeneric_type_that_does_exist()
        {
            var theService = new ColorService("red");
            var registry   = new Registry();

            registry.For <IService>().Use(theService);
            var session = BuildSession.ForPluginGraph(registry.Build());

            session.TryGetInstance(typeof(IService)).ShouldBeTheSameAs(theService);
        }
Esempio n. 5
0
        public void push_and_pop_an_instance_onto_a_session()
        {
            var session = BuildSession.ForPluginGraph(PluginGraph.CreateRoot());

            session.Push(new SmartInstance <AWidget>());
            session.Push(new LambdaInstance <StubbedGateway>(c => new StubbedGateway()));

            session.Push(new SmartInstance <ARule>());

            session.Pop();

            session.ParentType.ShouldBe(typeof(AWidget));
        }
        public void SetUp()
        {
            var registry = new Registry();

            registry.For <Rule>();
            registry.Scan(x => {
                x.Assembly("StructureMap.Testing.Widget");
                x.Assembly("StructureMap.Testing.Widget2");
            });

            var graph = registry.Build();

            _session = BuildSession.ForPluginGraph(graph);
        }
Esempio n. 7
0
        public void Can_get_an_instance_using_the_non_generic_method()
        {
            var registry = new Registry();

            registry.For <IFooService>().Use <Service>();

            var graph = registry.Build();

            var session = BuildSession.ForPluginGraph(graph);

            var instance = session.GetInstance(typeof(IFooService));

            instance.ShouldNotBeNull();
            instance.ShouldBeOfType <Service>();
        }
Esempio n. 8
0
        public void when_retrieving_by_try_get_named_instance_with_nongeneric_type_that_does_exist()
        {
            var red   = new ColorService("red");
            var green = new ColorService("green");

            var registry = new Registry();

            registry.For <IService>().Add(red).Named("red");
            registry.For <IService>().Add(green).Named("green");
            var graph = registry.Build();

            var session = BuildSession.ForPluginGraph(graph);

            session.TryGetInstance(typeof(IService), "red").ShouldBeTheSameAs(red);
        }
Esempio n. 9
0
        public void when_retrieving_an_object_by_nongeneric_type_and_name()
        {
            var red   = new ColorService("red");
            var green = new ColorService("green");

            var registry = new Registry();

            registry.For <IService>().Add(red).Named("red");
            registry.For <IService>().Add(green).Named("green");
            var graph = registry.Build();

            var session = BuildSession.ForPluginGraph(graph);

            session.GetInstance(typeof(IService), "red").ShouldBeTheSameAs(red);
        }
Esempio n. 10
0
        public void when_retrieving_an_object_by_name()
        {
            var red   = new ColorService("red");
            var green = new ColorService("green");

            var graph  = PluginGraph.CreateRoot();
            var family = graph.Families[typeof(IService)];

            family.AddInstance(new ObjectInstance(red).Named("red"));
            family.AddInstance(new ObjectInstance(green).Named("green"));

            var session = BuildSession.ForPluginGraph(graph);

            session.GetInstance <IService>("red").ShouldBeTheSameAs(red);
        }
Esempio n. 11
0
        public void push_an_instance_onto_a_session()
        {
            var session = BuildSession.ForPluginGraph(new PluginGraph());

            session.Push(new LambdaInstance <StubbedGateway>(c => new StubbedGateway()));

            session.ParentType.ShouldBeNull();
            session.Push(new SmartInstance <ARule>());

            session.ParentType.ShouldBe(typeof(StubbedGateway));

            session.Push(new SmartInstance <AWidget>());

            session.ParentType.ShouldBe(typeof(ARule));
        }
Esempio n. 12
0
        public void pushing_the_same_instance_will_throw_a_bidirectional_dependency_exception()
        {
            var session = BuildSession.ForPluginGraph(PluginGraph.CreateRoot());

            var instance1 = new SmartInstance <StubbedGateway>();
            var instance2 = new SmartInstance <ARule>();
            var instance3 = new SmartInstance <AWidget>();

            session.Push(instance1);
            session.Push(instance2);
            session.Push(instance3);

            var ex = Exception <StructureMapBuildException> .ShouldBeThrownBy(() => { session.Push(instance1); });

            ex.Message.ShouldContain("Bi-directional dependency relationship detected!");
        }
Esempio n. 13
0
        public void when_retrieving_by_try_get_named_instance_that_does_exist()
        {
            var red   = new ColorService("red");
            var green = new ColorService("green");

            var          graph  = new PluginGraph();
            PluginFamily family = graph.Families[typeof(IService)];

            family.AddInstance(new ObjectInstance(red).Named("red"));
            family.AddInstance(new ObjectInstance(green).Named("green"));

            var session = BuildSession.ForPluginGraph(graph);

            session.TryGetInstance <IService>("red").ShouldBeTheSameAs(red);
            session.TryGetInstance <IService>("green").ShouldBeTheSameAs(green);
        }
Esempio n. 14
0
        public ConfiguredInstanceTester()
        {
            var registry = new Registry();

            registry.For <Rule>();
            registry.Scan(x =>
            {
                x.Assembly("StructureMap.Testing.Widget");
                x.Assembly("StructureMap.Testing.Widget2");

                x.WithDefaultConventions();
            });

            var graph = registry.Build();

            _session = BuildSession.ForPluginGraph(graph);
        }
Esempio n. 15
0
        public void parent_type_is_null_in_the_initial_state()
        {
            var session = BuildSession.ForPluginGraph(PluginGraph.CreateRoot());

            session.ParentType.ShouldBeNull();
        }