public void ConfigureUsingXmlApplicationContext_CanMergePropertyValues()
        {
            XmlApplicationContext appContext = new XmlApplicationContext(false, ReadOnlyXmlTestResource.GetFilePath("HttpApplicationConfigurerMergablePropertiesTests.xml", typeof(HttpApplicationConfigurerTests)));

            ParentHttpModule module = new ParentHttpModule();

            TestApplication appObject = new TestApplication(new ModuleEntry[]
            {
                new ModuleEntry("DirectoryServicesAuthentication", module)
            });

            HttpApplicationConfigurer.Configure(appContext, appObject);

            //base class property has carried through successfully
            Assert.Contains("GrandParentValue1", module.GrandParentProperty);

            //parent property values remain in the final instance
            Assert.Contains("ParentValue1", module.ParentProperty);
            Assert.Contains("ParentValue2", module.ParentProperty);
            Assert.Contains("ParentValue3", module.ParentProperty);
            Assert.Contains("ParentValue4", module.ParentProperty);

            //the new additional value has been merged into the property
            Assert.Contains("MergedValueToFind", module.ParentProperty);
        }
        public void ConfigureUsingXmlApplicationContext_CanMergePropertyValues()
        {
            XmlApplicationContext appContext = new XmlApplicationContext(false, ReadOnlyXmlTestResource.GetFilePath("HttpApplicationConfigurerMergablePropertiesTests.xml", typeof(HttpApplicationConfigurerTests)));

            ParentHttpModule module = new ParentHttpModule();

            TestApplication appObject = new TestApplication(new ModuleEntry[]
                                                                {
                                                                    new ModuleEntry("DirectoryServicesAuthentication", module)
                                                                });
            HttpApplicationConfigurer.Configure(appContext, appObject);
            
            //base class property has carried through successfully
            Assert.Contains("GrandParentValue1", module.GrandParentProperty);

            //parent property values remain in the final instance
            Assert.Contains("ParentValue1", module.ParentProperty);
            Assert.Contains("ParentValue2", module.ParentProperty);
            Assert.Contains("ParentValue3", module.ParentProperty);
            Assert.Contains("ParentValue4", module.ParentProperty);

            //the new additional value has been merged into the property
            Assert.Contains("MergedValueToFind", module.ParentProperty);
        }