public void MergingWithAleadyMergedSourceDoesNothing()
        {
            ConfigurationSourceBaseImpl source    = GetConfigurationSource();
            ConfigurationSourceBaseImpl newSource = GetConfigurationSource();

            Assert.Equal(0, source.ConfigurationSources.Count);

            source.Merge(new[] { newSource });
            Assert.Equal(1, source.ConfigurationSources.Count);
            Assert.Equal(newSource, source.ConfigurationSources[0]);

            source.Merge(new[] { newSource });
            Assert.Equal(1, source.ConfigurationSources.Count);
            Assert.Equal(newSource, source.ConfigurationSources[0]);
        }
        public void MergingWithCollectionAddsConfigurationSection()
        {
            ConfigurationSourceBaseImpl source = GetConfigurationSource();
            const string sectionName           = SectionName + Key;
            var          section = new ConfigurationSection(sectionName);

            section.Set(Key, Key);
            var source2 = new ConfigurationSourceBaseImpl {
                section
            };

            source.Merge(new[] { source2 });
            Assert.Contains(section, source);
        }
        public void MergingWithCollectionOverwritesExistingKeys()
        {
            ConfigurationSourceBaseImpl source = GetConfigurationSource();
            var section = new ConfigurationSection(SectionName);

            section.Set(Key, Key);
            var source2 = new ConfigurationSourceBaseImpl {
                section
            };

            Assert.Equal(Value, source.Sections[SectionName].Get <string>(Key));
            source.Merge(new[] { source2 });
            Assert.Equal(Key, source.Sections[SectionName].Get <string>(Key));
        }
        public void MergingWithNullCollectionThrows()
        {
            ConfigurationSourceBaseImpl source = GetConfigurationSource();

            Assert.Throws <ArgumentNullException>(() => source.Merge(null));
        }