/// <summary>
        /// Groups the tests by outcome.
        /// </summary>
        private void GroupByOutcome()
        {
            var methodsGroupedByProject = TestMethodsWrapper
                                          .SelectMany(c => c.TestMethods)
                                          .GroupBy(tm => tm.ExecutionResult != null ? tm.ExecutionResult.Status : TestExecutionStatus.NotRun)
                                          .Select(tm =>
            {
                var text = GetOutcomeText(tm.Key);
                return(new TestMethodWrapper(text, tm, text));
            });

            Children.AddRange(methodsGroupedByProject);
        }
        /// <summary>
        /// Groups the tests by project.
        /// </summary>
        private void GroupByProject()
        {
            var methodsGroupedByProject = TestMethodsWrapper
                                          .SelectMany(c => c.TestMethods)
                                          .GroupBy(tm => tm.Class.DLLPath)
                                          .Select(tm =>
            {
                var dll = Path.GetFileNameWithoutExtension(tm.Key);
                return(new TestMethodWrapper(dll, tm, dll));
            });

            Children.AddRange(methodsGroupedByProject);
        }
        /// <summary>
        /// Groups the tests by Class.
        /// </summary>
        private void GroupByClass()
        {
            Children.AddRange(TestMethodsWrapper
                              .SelectMany(c => c.TestMethods)
                              .GroupBy(tm => tm.Class.Name)
                              .Select(tr =>
            {
                var @class = tr.ElementAt(0).Class;
                var fqn    = String.Format("{0}.{1}", @class.Namespace, @class.Name);

                return(new TestMethodWrapper(tr.Key, tr.OrderBy(t => t.FullyQualifiedName), fqn));
            })
                              .OrderBy(tmr => tmr.Name));
        }
        /// <summary>
        /// Groups the test by Traits.
        /// </summary>
        private void GroupByTrait()
        {
            var traits            = TestMethodsWrapper.SelectMany(c => c.TestMethods).SelectMany(m => m.Traits).Distinct();
            var testMethodWrapper = new List <TestMethodWrapper>();

            foreach (var trait in traits)
            {
                var selectedTraits = TestMethodsWrapper
                                     .SelectMany(c => c.TestMethods)
                                     .Where(m => m.Traits != null && m.Traits.Contains(trait))
                                     .OrderBy(m => m.FullyQualifiedName);

                testMethodWrapper.Add(new TestMethodWrapper(trait, selectedTraits, trait));
            }

            Children.AddRange(testMethodWrapper.OrderBy(tmw => tmw.Name));
        }