public void SavesChangesToConfigurationObject()
        {
            CustomTraceListenerData sourceElement = new CustomTraceListenerData("name", typeof(bool), "init");

            sourceElement.Attributes.Add("att3", "val3");
            sourceElement.Attributes.Add("att4", "val4");
            sourceElement.Attributes.Add("att5", "val5");
            sourceElement.Formatter          = "formatter";
            sourceElement.Filter             = SourceLevels.Information;
            sourceElement.TraceOutputOptions = TraceOptions.Callstack;
            List <ConfigurationSetting> settings = new List <ConfigurationSetting>(1);

            CustomTraceListenerDataWmiMapper.GenerateWmiObjects(sourceElement, settings);
            Assert.AreEqual(1, settings.Count);
            CustomTraceListenerSetting setting = settings[0] as CustomTraceListenerSetting;

            Assert.IsNotNull(setting);
            setting.Attributes         = new string[] { "att1=val1", "att2=val2" };
            setting.Formatter          = "formatter override";
            setting.InitData           = "init override";
            setting.ListenerType       = typeof(int).AssemblyQualifiedName;
            setting.Filter             = SourceLevels.All.ToString();
            setting.TraceOutputOptions = TraceOptions.DateTime.ToString();
            setting.Commit();
            Assert.AreEqual(2, sourceElement.Attributes.Count);
            Assert.AreEqual("val1", sourceElement.Attributes["att1"]);
            Assert.AreEqual("val2", sourceElement.Attributes["att2"]);
            Assert.AreEqual("formatter override", sourceElement.Formatter);
            Assert.AreEqual("init override", sourceElement.InitData);
            Assert.AreEqual(typeof(int), sourceElement.Type);
            Assert.AreEqual(SourceLevels.All, sourceElement.Filter);
            Assert.AreEqual(TraceOptions.DateTime, sourceElement.TraceOutputOptions);
        }
        public void WmiQueryReturnsSingleResultIfSinglePublishedInstance()
        {
            string[] attributes = new string[] { "att1", "att2" };
            CustomTraceListenerSetting setting
                = new CustomTraceListenerSetting(null, "name", "ListenerType", "InitData", attributes, "TraceOutputOptions", System.Diagnostics.SourceLevels.Critical.ToString(), "Formatter");

            setting.ApplicationName = "app";
            setting.SectionName     = InstrumentationConfigurationSection.SectionName;
            setting.Publish();
            using (System.Management.ManagementObjectCollection.ManagementObjectEnumerator resultEnumerator
                       = new ManagementObjectSearcher("root\\enterpriselibrary", "SELECT * FROM CustomTraceListenerSetting")
                         .Get().GetEnumerator())
            {
                Assert.IsTrue(resultEnumerator.MoveNext());
                Assert.AreEqual("name", resultEnumerator.Current.Properties["Name"].Value);
                Assert.AreEqual("ListenerType", resultEnumerator.Current.Properties["ListenerType"].Value);
                Assert.AreEqual("InitData", resultEnumerator.Current.Properties["InitData"].Value);
                Assert.ReferenceEquals(attributes, resultEnumerator.Current.Properties["Attributes"].Value);
                Assert.AreEqual("TraceOutputOptions", resultEnumerator.Current.Properties["TraceOutputOptions"].Value);
                Assert.AreEqual(SourceLevels.Critical.ToString(), resultEnumerator.Current.Properties["Filter"].Value);
                Assert.AreEqual("Formatter", resultEnumerator.Current.Properties["Formatter"].Value);
                Assert.AreEqual("CustomTraceListenerSetting", resultEnumerator.Current.SystemProperties["__CLASS"].Value);
                Assert.IsFalse(resultEnumerator.MoveNext());
            }
        }
        public void CanBindObject()
        {
            string[] attributes = new string[] { "att1", "att2" };
            CustomTraceListenerSetting setting
                = new CustomTraceListenerSetting(null, "name", "ListenerType", "InitData", attributes, "TraceOutputOptions", System.Diagnostics.SourceLevels.Critical.ToString(), "Formatter");

            setting.ApplicationName = "app";
            setting.SectionName     = InstrumentationConfigurationSection.SectionName;
            setting.Publish();
            using (System.Management.ManagementObjectCollection.ManagementObjectEnumerator resultEnumerator
                       = new ManagementObjectSearcher("root\\enterpriselibrary", "SELECT * FROM CustomTraceListenerSetting")
                         .Get().GetEnumerator())
            {
                Assert.IsTrue(resultEnumerator.MoveNext());
                Assert.AreEqual("CustomTraceListenerSetting", resultEnumerator.Current.SystemProperties["__CLASS"].Value);
                ManagementObject managementObject = resultEnumerator.Current as ManagementObject;
                Assert.IsNotNull(managementObject);
                managementObject.Put();
            }
        }