public void ConvertProcessConfig()
        {
            var filterDescriptorPid = new ProcessFilterDescriptor
            {
                Key       = ProcessFilterKey.ProcessId,
                MatchType = ProcessFilterType.Exact,
                Value     = "5"
            };

            var filterDescriptorPidContains = new ProcessFilterDescriptor
            {
                Key       = ProcessFilterKey.ProcessId,
                MatchType = ProcessFilterType.Contains,
                Value     = "6"
            };

            var filterDescriptorName = new ProcessFilterDescriptor
            {
                Key       = ProcessFilterKey.ProcessName,
                MatchType = ProcessFilterType.Exact,
                Value     = "name1"
            };

            var filterDescriptorNameContains = new ProcessFilterDescriptor
            {
                Key       = ProcessFilterKey.ProcessName,
                MatchType = ProcessFilterType.Contains,
                Value     = "namePartial"
            };

            var filterDescriptorCommand = new ProcessFilterDescriptor
            {
                Key       = ProcessFilterKey.CommandLine,
                MatchType = ProcessFilterType.Exact,
                Value     = "command arg"
            };

            var filterDescriptorCommandContains = new ProcessFilterDescriptor
            {
                Key       = ProcessFilterKey.CommandLine,
                MatchType = ProcessFilterType.Contains,
                Value     = "arg1"
            };

            var filter = CreateFilterEntry(filterDescriptorPid);

            ValidateProcessFilter(DiagProcessFilterCriteria.ProcessId, filterDescriptorPid.Value, filter);

            //Contains still becomes Exact for ProcessId
            filter = CreateFilterEntry(filterDescriptorPidContains);
            ValidateProcessFilter(DiagProcessFilterCriteria.ProcessId, filterDescriptorPidContains.Value, filter);

            filter = CreateFilterEntry(filterDescriptorName);
            ValidateProcessFilter(DiagProcessFilterCriteria.ProcessName, filterDescriptorName.Value, filter);

            filter = CreateFilterEntry(filterDescriptorNameContains);
            ValidateProcessFilter(DiagProcessFilterCriteria.ProcessName, filterDescriptorNameContains.Value, DiagProcessFilterMatchType.Contains, filter);

            filter = CreateFilterEntry(filterDescriptorCommand);
            ValidateProcessFilter(DiagProcessFilterCriteria.CommandLine, filterDescriptorCommand.Value, filter);

            filter = CreateFilterEntry(filterDescriptorCommandContains);
            ValidateProcessFilter(DiagProcessFilterCriteria.CommandLine, filterDescriptorCommandContains.Value, DiagProcessFilterMatchType.Contains, filter);

            //This filter doesn't make any sense but we are just testing that we can combine multiple filters
            var options = CreateOptions(filterDescriptorPid, filterDescriptorName, filterDescriptorNameContains, filterDescriptorCommand, filterDescriptorCommandContains);

            ValidateProcessFilter(DiagProcessFilterCriteria.ProcessId, filterDescriptorPid.Value, options.Filters[0]);
            ValidateProcessFilter(DiagProcessFilterCriteria.ProcessName, filterDescriptorName.Value, options.Filters[1]);
            ValidateProcessFilter(DiagProcessFilterCriteria.ProcessName, filterDescriptorNameContains.Value, DiagProcessFilterMatchType.Contains, options.Filters[2]);
            ValidateProcessFilter(DiagProcessFilterCriteria.CommandLine, filterDescriptorCommand.Value, options.Filters[3]);
            ValidateProcessFilter(DiagProcessFilterCriteria.CommandLine, filterDescriptorCommandContains.Value, DiagProcessFilterMatchType.Contains, options.Filters[4]);
        }
 private static DiagProcessFilterEntry CreateFilterEntry(ProcessFilterDescriptor filter)
 {
     return(CreateOptions(filter).Filters.First());
 }