public void CreateContainerAndUseConstantParameters() { string xmlScript = @" <container> <assemblies> <element file='NanoContainer.Tests.dll'/> </assemblies> <component-implementation key='fooBar' type='NanoContainer.Tests.TestModel.DependentOnStrings'> <parameter>""ONE""</parameter> <parameter>""TWO""</parameter> </component-implementation> </container>"; StreamReader scriptStream = new StreamReader(new MemoryStream(new ASCIIEncoding().GetBytes(xmlScript))); ContainerBuilderFacade cbf = new XmlContainerBuilderFacade(scriptStream); StringCollection assemblies = new StringCollection(); assemblies.Add("NanoContainer.Tests.dll"); IPicoContainer pico = cbf.Build(assemblies); Assert.AreEqual(1, pico.ComponentInstances.Count); DependentOnStrings dependentOnStrings = pico.GetComponentInstance("fooBar") as DependentOnStrings; Assert.AreEqual("ONE", dependentOnStrings.One); Assert.AreEqual("TWO", dependentOnStrings.Two); }
public void SimpleContent() { string xmlScript = @" <container> <component-instance key='Hello'>XML</component-instance> <component-instance key='Hei'>XMLContinerBuilder</component-instance> </container>"; StreamReader scriptStream = new StreamReader(new MemoryStream(new ASCIIEncoding().GetBytes(xmlScript))); IMutablePicoContainer parent = new DefaultPicoContainer(); ContainerBuilderFacade cbf = new XmlContainerBuilderFacade(scriptStream); IPicoContainer pico = cbf.Build(parent, new ArrayList()); Assert.AreEqual("XML", pico.GetComponentInstance("Hello")); Assert.AreEqual("XMLContinerBuilder", pico.GetComponentInstance("Hei")); }
public void CreateSimpleContainer() { string xmlScript = @" <container> <assemblies> <element file='NanoContainer.Tests.dll'/> </assemblies> <component-implementation type='System.Text.StringBuilder'/> <component-implementation key='typeof(NanoContainer.Test.TestModel.WebServerConfig)' type='NanoContainer.Test.TestModel.DefaultWebServerConfig'/> <component-implementation key='NanoContainer.Test.TestModel.WebServer' type='NanoContainer.Test.TestModel.DefaultWebServer'/> </container>"; StreamReader scriptStream = new StreamReader(new MemoryStream(new ASCIIEncoding().GetBytes(xmlScript))); IMutablePicoContainer parent = new DefaultPicoContainer(); ContainerBuilderFacade cbf = new XmlContainerBuilderFacade(scriptStream); IPicoContainer pico = cbf.Build(parent, new ArrayList()); Assert.IsNotNull(pico.GetComponentInstance(typeof (StringBuilder))); Assert.IsNotNull(pico.GetComponentInstance(typeof (WebServerConfig))); Assert.IsNotNull(pico.GetComponentInstance("NanoContainer.Test.TestModel.WebServer")); }
public void InvalidConstantParameterThrowsException() { string xmlScript = @" <container> <assemblies> <element file='NanoContainer.Tests.dll'/> </assemblies> <component-implementation type='NanoContainer.Tests.TestModel.DependentOnStrings'> <parameter>this should cause the test to fail</parameter> <parameter>""TWO""</parameter> </component-implementation> </container>"; StreamReader scriptStream = new StreamReader(new MemoryStream(new ASCIIEncoding().GetBytes(xmlScript))); ContainerBuilderFacade cbf = new XmlContainerBuilderFacade(scriptStream); cbf.Build(new ArrayList()); }
public void CreateContainerFromNullScriptThrowsArgumentNullException() { string xmlScript = null; StreamReader scriptStream = new StreamReader(new MemoryStream(new ASCIIEncoding().GetBytes(xmlScript))); ContainerBuilderFacade cbf = new XmlContainerBuilderFacade(scriptStream); cbf.Build(null, new ArrayList()); }
public void EmptyScriptDoesNotThrowsEmptyCompositionException() { string xmlScript = @"<container/>"; StreamReader scriptStream = new StreamReader(new MemoryStream(new ASCIIEncoding().GetBytes(xmlScript))); ContainerBuilderFacade cbf = new XmlContainerBuilderFacade(scriptStream); cbf.Build(null, new ArrayList()); }
public void ConstantParameterWithNoChildElementThrowsPicoCompositionException() { string xmlScript = @" <container> <component-implementation key='NanoContainer.Test.TestModel.WebServer' type='NanoContainer.Test.TestModel.DefaultWebServer'> <parameter/> <parameter/> </component-implementation> </container>"; StreamReader scriptStream = new StreamReader(new MemoryStream(new ASCIIEncoding().GetBytes(xmlScript))); IMutablePicoContainer parent = new DefaultPicoContainer(); ContainerBuilderFacade cbf = new XmlContainerBuilderFacade(scriptStream); cbf.Build(parent, new ArrayList()); }
public void UnknownClassThrowsPicoCompositionException() { string xmlScript = @" <container> <component-implementation type='Foo'/> </container>"; StreamReader scriptStream = new StreamReader(new MemoryStream(new ASCIIEncoding().GetBytes(xmlScript))); IMutablePicoContainer parent = new DefaultPicoContainer(); ContainerBuilderFacade cbf = new XmlContainerBuilderFacade(scriptStream); cbf.Build(parent, new ArrayList()); }
public void TypeLoaderHierarchy() { FileInfo testCompDll = new FileInfo("../../../TestComp/bin/Debug/TestComp.dll"); FileInfo testCompDll2 = new FileInfo("../../../TestComp2/bin/Debug/TestComp2.dll"); FileInfo notStartableDll = new FileInfo("../../../NotStartable/bin/Debug/NotStartable.dll"); Assert.IsTrue(testCompDll.Exists); Assert.IsTrue(testCompDll2.Exists); Assert.IsTrue(notStartableDll.Exists); string xmlScript = @" <container> <assemblies> <element file='" + testCompDll.FullName + @"'/> </assemblies> <component-implementation key='foo' type='TestComp'/> <container> <assemblies> <element file='" + testCompDll2.FullName + @"'/> <element file='" + notStartableDll.FullName + @"'/> </assemblies> <component-implementation key='bar' type='TestComp2'/> <component-implementation key='phony' type='NotStartable'/> </container> <component-implementation type='System.Text.StringBuilder'/> </container>"; StreamReader scriptStream = new StreamReader(new MemoryStream(Encoding.UTF8.GetBytes(xmlScript))); IMutablePicoContainer parent = new DefaultPicoContainer(); ContainerBuilderFacade cbf = new XmlContainerBuilderFacade(scriptStream); IPicoContainer pico = cbf.Build(parent, new ArrayList()); object fooTestComp = pico.GetComponentInstance("foo"); Assert.IsNotNull(fooTestComp, "Container should have a 'foo' component"); StringBuilder sb = (StringBuilder) pico.GetComponentInstance(typeof(StringBuilder)); Assert.IsTrue(sb.ToString().IndexOf("-TestComp2") != -1, "Container should have instantiated a 'TestComp2' component because it is Startable"); // We are using the DefaultLifecycleManager, which only instantiates Startable components, and not non-Startable components. Assert.IsTrue(sb.ToString().IndexOf("-NotStartable") == -1, "Container should NOT have instantiated a 'NotStartable' component because it is NOT Startable"); }
public void LoadFromAnExternalAssembly() { FileInfo testCompDll = new FileInfo("../../../TestComp/bin/Debug/TestComp.dll"); Assert.IsTrue(testCompDll.Exists); string xmlScript = @" <container> <assemblies> <element file='" + testCompDll.FullName + @"'/> </assemblies> <component-implementation key='foo' type='TestComp'/> </container>"; StreamReader scriptStream = new StreamReader(new MemoryStream(Encoding.UTF8.GetBytes(xmlScript))); IMutablePicoContainer parent = new DefaultPicoContainer(); ContainerBuilderFacade cbf = new XmlContainerBuilderFacade(scriptStream); IPicoContainer pico = cbf.Build(parent, new ArrayList()); object fooTestComp = pico.GetComponentInstance("foo"); Assert.IsNotNull(fooTestComp, "Container should have a 'foo' component"); }
public void NonParameterElementsAreIgnoredInComponentImplementation() { string xmlScript = @" <container> <assemblies> <element file='NanoContainer.Tests.dll'/> </assemblies> <component-implementation key='aBuffer' type='System.Text.StringBuilder'/> <component-implementation key='NanoContainer.Test.TestModel.WebServerConfig' type='NanoContainer.Test.TestModel.DefaultWebServerConfig'/> <component-implementation key='NanoContainer.Test.TestModel.WebServer' type='NanoContainer.Test.TestModel.DefaultWebServer'> <parameter key='NanoContainer.Test.TestModel.WebServerConfig'/> <parameter key='aBuffer'/> <any-old-stuff/> </component-implementation> </container>"; StreamReader scriptStream = new StreamReader(new MemoryStream(new ASCIIEncoding().GetBytes(xmlScript))); IMutablePicoContainer parent = new DefaultPicoContainer(); ContainerBuilderFacade cbf = new XmlContainerBuilderFacade(scriptStream); IPicoContainer pico = cbf.Build(parent, new ArrayList()); Assert.AreEqual(3, pico.ComponentInstances.Count); Assert.IsNotNull(pico.GetComponentInstance("aBuffer")); Assert.IsNotNull(pico.GetComponentInstance("NanoContainer.Test.TestModel.WebServerConfig")); Assert.IsNotNull(pico.GetComponentInstance("NanoContainer.Test.TestModel.WebServer")); }