public void ExpandBackToBackWithSpaceWorks()
        {
            ConfigurationSourceBaseImpl source = GetConfigurationSource();

            source.Sections[SectionName].Set(Key, "${value} ${value}");
            source.Sections[SectionName].Set(Value, Key);

            Assert.Equal("${value} ${value}", source.Sections[SectionName].Get <string>(Key));
            source.ExpandKeyValues();
            Assert.Equal(Key + " " + Key, source.Sections[SectionName].Get <string>(Key));
        }
        public void ExpandFromExternalSectionWorks()
        {
            const string newSectionName = SectionName + "New";
            var          section        = new ConfigurationSection(newSectionName);

            section.Set(Value, Value);

            ConfigurationSourceBaseImpl source = GetConfigurationSource();
            const string varKeyValue           = "${" + newSectionName + "|value}";

            source.Sections[SectionName].Set(Key, varKeyValue);

            source.Add(section);

            Assert.Equal(varKeyValue, source.Sections[SectionName].Get <string>(Key));
            source.ExpandKeyValues();
            Assert.Equal(Value, source.Sections[SectionName].Get <string>(Key));
        }
        public void ExpandFromDoubleExternalSectionWorks()
        {
            // old -> new -> dev -> key : value
            const string devSectionName = SectionName + "Dev";
            const string newSectionName = SectionName + "New";

            var          devSection  = new ConfigurationSection(devSectionName);
            var          newSection  = new ConfigurationSection(newSectionName);
            const string varKeyValue = "${" + newSectionName + "|key}";

            devSection.Set(Key, Value);
            newSection.Set(Key, "${" + devSectionName + "|key}");

            ConfigurationSourceBaseImpl source = GetConfigurationSource();

            source.Sections[SectionName].Set(Key, varKeyValue);

            source.Add(newSection);
            source.Add(devSection);

            Assert.Equal(varKeyValue, source.Sections[SectionName].Get <string>(Key));
            source.ExpandKeyValues();
            Assert.Equal(Value, source.Sections[SectionName].Get <string>(Key));
        }