public void MergeEmptyChild()
 {
     ManagedNameValueCollection parent = new ManagedNameValueCollection();
     parent.Add("one", "one");
     parent.Add("two", "two");
     ManagedNameValueCollection child = new ManagedNameValueCollection();
     child.MergeEnabled = true;
     NameValueCollection mergedMap = (NameValueCollection)child.Merge(parent);
     Assert.AreEqual(2, mergedMap.Count);
 }
 public void MergeSunnyDay()
 {
     ManagedNameValueCollection parent = new ManagedNameValueCollection();
     parent.Add("one", "one");
     parent.Add("two", "two");
     ManagedNameValueCollection child = new ManagedNameValueCollection();
     child.Add("three", "three");
     child.MergeEnabled = true;
     NameValueCollection mergedList = (NameValueCollection)child.Merge(parent);
     Assert.AreEqual(3, mergedList.Count);
 }
        /// <summary>
        /// Gets a name value collection mapping definition.
        /// </summary>
        /// <param name="nameValueEle">
        /// The element describing the name value collection mapping definition.
        /// </param>
        /// <param name="name">
        /// The name of the object (definition) associated with the
        /// name value collection mapping definition.
        /// </param>
        /// <param name="parserContext">the context carrying parsing state information</param>
        /// <returns>The name value collection definition.</returns>
        protected NameValueCollection ParseNameValueCollectionElement(XmlElement nameValueEle, string name, ParserContext parserContext)
        {
            ManagedNameValueCollection nvc = new ManagedNameValueCollection();
            nvc.MergeEnabled = ParseMergeAttribute(nameValueEle, parserContext.ParserHelper);

            XmlNodeList addElements = nameValueEle.GetElementsByTagName(ObjectDefinitionConstants.AddElement);
            foreach (XmlElement addElement in addElements)
            {
                string key = GetAttributeValue(addElement, ObjectDefinitionConstants.KeyAttribute);
                string value = GetAttributeValue(addElement, ObjectDefinitionConstants.ValueAttribute);
                string delimiters = GetAttributeValue(addElement, ObjectDefinitionConstants.DelimitersAttribute);

                if (StringUtils.HasText(delimiters))
                {
                    string[] values = value.Split(delimiters.ToCharArray());
                    foreach (string v in values)
                    {
                        nvc.Add(key, v);
                    }
                }
                else
                {
                    nvc.Add(key, value);
                }
            }
            return nvc;
        }
 public void MergeChildValueOverrideTheParents()
 {
     ManagedNameValueCollection parent = new ManagedNameValueCollection();
     parent.Add("one", "one");
     parent.Add("two", "two");
     ManagedNameValueCollection child = new ManagedNameValueCollection();
     child.Add("one", "fork");
     child.MergeEnabled = true;
     NameValueCollection mergedMap = (NameValueCollection)child.Merge(parent);
     Assert.AreEqual(2, mergedMap.Count);
     Assert.AreEqual("fork", mergedMap["one"]);
 }