Пример #1
0
        public void CanCreateNamedConcreteObjectByAskingForNamedInterface()
        {
            string config =
                @"<object-builder-config xmlns=""pag-object-builder"">
               <build-rules>
						<build-rule type="""                         + FullNameSimpleObject + @""" name=""Foo"" mode=""Instance"">
							<constructor-params>
								<value-param type=""System.Int32"">12</value-param>
							</constructor-params>
						</build-rule>
						<build-rule name=""sm2"" type="""                         + FullNameISimpleObject + @""" mode=""Instance"">
							<mapped-type type="""                             + FullNameSimpleObject + @""" name=""Foo""/>
						</build-rule>
						<build-rule type="""                         + FullNameISimpleObject + @""" mode=""Instance"">
							<mapped-type type="""                             + FullNameSimpleObject + @"""/>
						</build-rule>
					</build-rules>
				</object-builder-config>"                ;

            Builder builder = new Builder(ObjectBuilderXmlConfig.FromXml(config));
            Locator locator = CreateLocator();

            ISimpleObject sm1 = builder.BuildUp <ISimpleObject>(locator, null, null);
            ISimpleObject sm2 = builder.BuildUp <ISimpleObject>(locator, "sm2", null);

            Assert.IsNotNull(sm1);
            Assert.IsNotNull(sm2);
            Assert.IsTrue(sm1 is SimpleObject);
            Assert.IsTrue(sm2 is SimpleObject);
            Assert.AreEqual(0, ((SimpleObject)sm1).IntParam);
            Assert.AreEqual(12, ((SimpleObject)sm2).IntParam);
        }
Пример #2
0
        public void CanCreateInstances()
        {
            string config =
                @"<object-builder-config xmlns=""pag-object-builder"">
               <build-rules>
						<build-rule type="""                         + FullNameSimpleObject + @""" mode=""Instance"">
							<constructor-params>
								<value-param type=""System.Int32"">12</value-param>
							</constructor-params>
						</build-rule>
					</build-rules>
				</object-builder-config>"                ;

            Builder builder = new Builder(ObjectBuilderXmlConfig.FromXml(config));
            Locator locator = CreateLocator();

            SimpleObject m1 = builder.BuildUp <SimpleObject>(locator, null, null);
            SimpleObject m2 = builder.BuildUp <SimpleObject>(locator, null, null);

            Assert.IsNotNull(m1);
            Assert.IsNotNull(m2);
            Assert.AreEqual(12, m1.IntParam);
            Assert.AreEqual(12, m2.IntParam);
            Assert.IsTrue(m1 != m2);
        }
Пример #3
0
        public void CanInjectMultiplePropertiesIncludingCreatedObjects()
        {
            string config =
                @"<object-builder-config xmlns=""pag-object-builder"">
               <build-rules>
						<build-rule type="""                         + FullNameSimpleObject + @""" mode=""Instance"">
							<constructor-params>
								<value-param type=""System.Int32"">15</value-param>
							</constructor-params>
						</build-rule>
						<build-rule type="""                         + FullNameComplexObject + @""" mode=""Instance"">
							<property name=""StringProperty"">
								<value-param type=""System.String"">Bar is here</value-param>
							</property>
							<property name=""SimpleObject"">
								<ref-param type="""                                 + FullNameSimpleObject + @""" />
							</property>
						</build-rule>
					</build-rules>
				</object-builder-config>"                ;

            Builder builder = new Builder(ObjectBuilderXmlConfig.FromXml(config));
            Locator locator = CreateLocator();

            ComplexObject co = builder.BuildUp <ComplexObject>(locator, null, null);

            Assert.IsNotNull(co);
            Assert.IsNotNull(co.SimpleObject);
            Assert.AreEqual("Bar is here", co.StringProperty);
            Assert.AreEqual(15, co.SimpleObject.IntParam);
        }
Пример #4
0
        public void RefParamsCanAskForSpecificallyNamedObjects()
        {
            string config =
                @"<object-builder-config xmlns=""pag-object-builder"">
               <build-rules>
						<build-rule name=""Object1"" type="""                         + FullNameSimpleObject + @""" mode=""Singleton"">
							<constructor-params>
								<value-param type=""System.Int32"">12</value-param>
							</constructor-params>
						</build-rule>
						<build-rule name=""Object2"" type="""                         + FullNameSimpleObject + @""" mode=""Singleton"">
							<constructor-params>
								<value-param type=""System.Int32"">32</value-param>
							</constructor-params>
						</build-rule>
						<build-rule type="""                         + FullNameComplexObject + @""" mode=""Singleton"">
							<constructor-params>
								<ref-param type="""                                 + FullNameSimpleObject + @""" name=""Object2"" />
							</constructor-params>
						</build-rule>
					</build-rules>
				</object-builder-config>"                ;

            Builder builder = new Builder(ObjectBuilderXmlConfig.FromXml(config));
            Locator locator = CreateLocator();

            ComplexObject cm = builder.BuildUp <ComplexObject>(locator, null, null);
            SimpleObject  sm = builder.BuildUp <SimpleObject>(locator, "Object2", null);

            Assert.IsNotNull(cm);
            Assert.IsNotNull(cm.SimpleObject);
            Assert.AreEqual(32, cm.SimpleObject.IntParam);
            Assert.AreSame(sm, cm.SimpleObject);
        }
Пример #5
0
        public void BuilderWithNoStrategiesThrowsWhenBuilding()
        {
            string config =
                @"<object-builder-config xmlns=""pag-object-builder"">
					<strategies include-default=""false"" />
				</object-builder-config>"                ;

            Builder builder = new Builder(ObjectBuilderXmlConfig.FromXml(config));
            Locator locator = CreateLocator();

            builder.BuildUp <object>(locator, null, null);
        }
Пример #6
0
        private static ObjectBuilderXmlConfig ParseXmlConfiguration(string config)
        {
            XmlSerializer ser          = new XmlSerializer(typeof(ObjectBuilderXmlConfig));
            StringReader  stringReader = new StringReader(config);
            XmlSchema     schema       =
                XmlSchema.Read(
                    Assembly.GetExecutingAssembly().GetManifestResourceStream(
                        "Microsoft.Practices.ObjectBuilder.Tests.Configuration.ObjectBuilderXmlConfig.xsd"), null);
            XmlReaderSettings settings = new XmlReaderSettings();

            settings.ValidationType = ValidationType.Schema;
            settings.Schemas.Add(schema);
            XmlReader reader = XmlReader.Create(stringReader, settings);
            ObjectBuilderXmlConfig configData = (ObjectBuilderXmlConfig)ser.Deserialize(reader);

            return(configData);
        }
Пример #7
0
        public void CanCreateConcreteObjectByAskingForInterface()
        {
            string config =
                @"<object-builder-config xmlns=""pag-object-builder"">
               <build-rules>
						<build-rule type="""                         + FullNameISimpleObject + @""" mode=""Instance"">
							<mapped-type type="""                             + FullNameSimpleObject + @""" />
						</build-rule>
					</build-rules>
				</object-builder-config>"                ;

            Builder builder = new Builder(ObjectBuilderXmlConfig.FromXml(config));
            Locator locator = CreateLocator();

            ISimpleObject sm = builder.BuildUp <ISimpleObject>(locator, null, null);

            Assert.IsNotNull(sm);
            Assert.IsTrue(sm is SimpleObject);
        }
Пример #8
0
        public void CanCreateSingleton()
        {
            string config =
                @"<object-builder-config xmlns=""pag-object-builder"">
               <build-rules>
						<build-rule type="""                         + FullNameSimpleObject + @""" mode=""Singleton"">
							<constructor-params>
								<value-param type=""System.Int32"">12</value-param>
							</constructor-params>
						</build-rule>
					</build-rules>
				</object-builder-config>"                ;

            Builder builder = new Builder(ObjectBuilderXmlConfig.FromXml(config));
            Locator locator = CreateLocator();

            SimpleObject m1 = builder.BuildUp <SimpleObject>(locator, null, null);
            SimpleObject m2 = builder.BuildUp <SimpleObject>(locator, null, null);

            Assert.AreSame(m1, m2);
        }
Пример #9
0
        public void CanInjectValuesIntoProperties()
        {
            string config =
                @"<object-builder-config xmlns=""pag-object-builder"">
               <build-rules>
						<build-rule type="""                         + FullNameSimpleObject + @""" mode=""Instance"">
							<property name=""StringProperty"">
								<value-param type=""System.String"">Bar is here</value-param>
							</property>
						</build-rule>
					</build-rules>
				</object-builder-config>"                ;

            Builder builder = new Builder(ObjectBuilderXmlConfig.FromXml(config));
            Locator locator = CreateLocator();

            SimpleObject sm = builder.BuildUp <SimpleObject>(locator, null, null);

            Assert.IsNotNull(sm);
            Assert.AreEqual("Bar is here", sm.StringProperty);
        }