From: <jer...@us...> - 2008-08-11 01:56:27
|
Revision: 137 http://structuremap.svn.sourceforge.net/structuremap/?rev=137&view=rev Author: jeremydmiller Date: 2008-08-11 01:56:24 +0000 (Mon, 11 Aug 2008) Log Message: ----------- added some unit tests for Xml optional properties. Strangely enough, it worked already Modified Paths: -------------- trunk/Source/StructureMap/Graph/PluginFamilyCollection.cs trunk/Source/StructureMap/Graph/PluginGraph.cs trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs Modified: trunk/Source/StructureMap/Graph/PluginFamilyCollection.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluginFamilyCollection.cs 2008-08-10 21:38:45 UTC (rev 136) +++ trunk/Source/StructureMap/Graph/PluginFamilyCollection.cs 2008-08-11 01:56:24 UTC (rev 137) @@ -37,6 +37,16 @@ get { return _pluginFamilies.Count; } } + public IEnumerable<PluginFamily> All + { + get + { + PluginFamily[] families = new PluginFamily[_pluginFamilies.Count]; + _pluginFamilies.Values.CopyTo(families, 0); + return families; + } + } + #region IEnumerable<PluginFamily> Members IEnumerator<PluginFamily> IEnumerable<PluginFamily>.GetEnumerator() Modified: trunk/Source/StructureMap/Graph/PluginGraph.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluginGraph.cs 2008-08-10 21:38:45 UTC (rev 136) +++ trunk/Source/StructureMap/Graph/PluginGraph.cs 2008-08-11 01:56:24 UTC (rev 137) @@ -104,7 +104,7 @@ _assemblies.ScanForStructureMapObjects(this); } - foreach (PluginFamily family in _pluginFamilies) + foreach (PluginFamily family in _pluginFamilies.All) { family.Seal(); } Modified: trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs 2008-08-10 21:38:45 UTC (rev 136) +++ trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs 2008-08-11 01:56:24 UTC (rev 137) @@ -1,9 +1,11 @@ using System; +using System.Diagnostics; using System.Drawing; using System.Linq.Expressions; using NUnit.Framework; using StructureMap.Configuration.DSL; using StructureMap.Pipeline; +using StructureMap.Testing.TestData; using StructureMap.Testing.Widget; namespace StructureMap.Testing.Pipeline @@ -92,7 +94,7 @@ } [Test] - public void one_optional_child_setter() + public void one_optional_child_setter_with_the_setter_property_defined() { var container = new Container(r => r.ForRequestedType<ClassWithDependency>().TheDefaultIs( Instance<ClassWithDependency>().Child("Rule").Is(new ColorRule("Red")) @@ -102,7 +104,70 @@ container.GetInstance<ClassWithDependency>().Rule.ShouldBeOfType(typeof(ColorRule)); } + [Test] + public void one_optional_child_setter_without_the_setter_property_defined() + { + var container = new Container(r => r.ForRequestedType<ClassWithDependency>().TheDefaultIs( + Instance<ClassWithDependency>()) + + ); + + container.GetInstance<ClassWithDependency>().Rule.ShouldBeNull(); + } + + [Test] + public void read_instance_from_xml_with_optional_setter_defined() + { + Debug.WriteLine(typeof(ClassWithDependency).AssemblyQualifiedName); + + var graph = DataMother.BuildPluginGraphFromXml(@" +<StructureMap MementoStyle='Attribute'> + <DefaultInstance + PluginType='StructureMap.Testing.Pipeline.ClassWithDependency, StructureMap.Testing' + PluggedType='StructureMap.Testing.Pipeline.ClassWithDependency, StructureMap.Testing'> + + <Rule PluggedType='StructureMap.Testing.Widget.ColorRule, StructureMap.Testing.Widget' color='Red' /> + + + + </DefaultInstance> +</StructureMap> + +"); + + Container container = new Container(graph); + + container.GetInstance<ClassWithDependency>().Rule.IsType<ColorRule>().Color.ShouldEqual("Red"); + } + + + + [Test] + public void read_instance_from_xml_with_optional_setter_not_defined() + { + Debug.WriteLine(typeof(ClassWithDependency).AssemblyQualifiedName); + + var graph = DataMother.BuildPluginGraphFromXml(@" +<StructureMap MementoStyle='Attribute'> + <DefaultInstance + PluginType='StructureMap.Testing.Pipeline.ClassWithDependency, StructureMap.Testing' + PluggedType='StructureMap.Testing.Pipeline.ClassWithDependency, StructureMap.Testing'> + + </DefaultInstance> +</StructureMap> + +"); + + Container container = new Container(graph); + + container.GetInstance<ClassWithDependency>().Rule.ShouldBeNull(); + } + + + + + [Test] public void one_optional_child_setter2() { var container = new Container(r => r.ForRequestedType<ClassWithDependency>().TheDefaultIs( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |