Esempio n. 1
0
 public void LoadData(string header)
 {
     FunctionalExt.Switch(header)
     .Case("Tests", () => LoadTests(_currentMutant))
     .Case("Code", () => LoadCode(_viewModel.SelectedLanguage))
     .ThrowIfNoMatch();
 }
Esempio n. 2
0
        private List <LineChange> CreateDiff(CodeLanguage language, string input1, string input2, StringBuilder diff)
        {
            IEqualityComparer <string> eq = FunctionalExt.ValuedSwitch <CodeLanguage, IEqualityComparer <string> >(language)
                                            .Case(CodeLanguage.CSharp, () => new CSharpCodeLineEqualityComparer())
                                            .Case(CodeLanguage.IL, () => new ILCodeLineEqualityComparer())
                                            .GetResult();
            var differ = new AlignedDiff <string>(
                NormalizeAndSplitCode(input1),
                NormalizeAndSplitCode(input2),
                eq,
                new StringSimilarityComparer(),
                new StringAlignmentFilter());

            int line1 = 0, line2 = 0;

            var list = new List <LineChange>();

            foreach (var change in differ.Generate())
            {
                int startIndex = 0;
                switch (change.Change)
                {
                case ChangeType.Same:
                    diff.AppendFormat("{0,4} {1,4} ", ++line1, ++line2);
                    diff.AppendFormat("  ");
                    diff.AppendLine(change.Element1);
                    break;

                case ChangeType.Added:
                    startIndex = diff.Length;
                    diff.AppendFormat("     {1,4}  +  ", line1, ++line2);

                    diff.AppendLine(change.Element2);
                    list.Add(NewLineChange(LineChangeType.Add, diff, startIndex, diff.Length));
                    break;

                case ChangeType.Deleted:
                    startIndex = diff.Length;
                    diff.AppendFormat("{0,4}       -  ", ++line1, line2);
                    diff.AppendLine(change.Element1);
                    list.Add(NewLineChange(LineChangeType.Remove, diff, startIndex, diff.Length));
                    break;

                case ChangeType.Changed:
                    startIndex = diff.Length;
                    diff.AppendFormat("{0,4}      ", ++line1, line2);
                    diff.AppendFormat("(-) ");
                    diff.AppendLine(change.Element1);
                    list.Add(NewLineChange(LineChangeType.Remove, diff, startIndex, diff.Length));
                    startIndex = diff.Length;
                    diff.AppendFormat("     {1,4} ", line1, ++line2);
                    diff.AppendFormat("(+) ");
                    diff.AppendLine(change.Element2);
                    list.Add(NewLineChange(LineChangeType.Add, diff, startIndex, diff.Length));
                    break;
                }
            }
            return(list);
        }
        private List <LineChange> CreateDiff(CodeLanguage language, string input1, string input2, StringBuilder diff)
        {
            IEqualityComparer <string> eq = FunctionalExt.ValuedSwitch <CodeLanguage, IEqualityComparer <string> >(language)
                                            .Case(CodeLanguage.CSharp, () => new CSharpCodeLineEqualityComparer())
                                            .Case(CodeLanguage.IL, () => new ILCodeLineEqualityComparer())
                                            .GetResult();

            int line1 = 0, line2 = 0;

            var list = new List <LineChange>();

            foreach (var change in new InlineDiffBuilder(new Differ()).BuildDiffModel(input1, input2).Lines)
            {
                int startIndex;
                switch (change.Type)
                {
                case ChangeType.Unchanged:
                    diff.AppendFormat("{0,4} {1,4} ", ++line1, ++line2);
                    diff.AppendFormat("  ");
                    diff.AppendLine(change.Text);
                    break;

                case ChangeType.Inserted:
                    startIndex = diff.Length;
                    diff.AppendFormat("     {1,4}  +  ", line1, ++line2);

                    diff.AppendLine(change.Text);
                    list.Add(NewLineChange(LineChangeType.Add, diff, startIndex, diff.Length));
                    break;

                case ChangeType.Deleted:
                    startIndex = diff.Length;
                    diff.AppendFormat("{0,4}       -  ", ++line1, line2);
                    diff.AppendLine(change.Text);
                    list.Add(NewLineChange(LineChangeType.Remove, diff, startIndex, diff.Length));
                    break;

                case ChangeType.Modified:
                    startIndex = diff.Length;
                    diff.AppendFormat("{0,4}      ", ++line1, line2);
                    diff.AppendFormat("(-) ");
                    diff.AppendLine(change.Text);
                    list.Add(NewLineChange(LineChangeType.Remove, diff, startIndex, diff.Length));
                    startIndex = diff.Length;
                    diff.AppendFormat("     {1,4} ", line1, ++line2);
                    diff.AppendFormat("(+) ");
                    diff.AppendLine(change.Text);
                    list.Add(NewLineChange(LineChangeType.Add, diff, startIndex, diff.Length));
                    break;
                }
            }

            return(list);
        }
 public override Brush Convert(MutantResultState state)
 {
     return(FunctionalExt.ValuedSwitch <MutantResultState, Brush>(state)
            .Case(MutantResultState.Untested, Brushes.Gainsboro)
            .Case(MutantResultState.Killed, Brushes.Gray)
            .Case(MutantResultState.Live, Brushes.Orange)
            .Case(MutantResultState.Tested, Brushes.Blue)
            .Case(MutantResultState.Creating, Brushes.Green)
            .Case(MutantResultState.Writing, Brushes.Green)
            .Case(MutantResultState.Error, Brushes.Red)
            .GetResult());
 }
Esempio n. 5
0
 private void SetState(OperationsState state)
 {
     if (_viewModel.OperationsState != state)
     {
         _viewModel.OperationsState            = state;
         _viewModel.OperationsStateDescription = FunctionalExt.ValuedSwitch <OperationsState, string>(state)
                                                 .Case(OperationsState.None, "")
                                                 .Case(OperationsState.TestingPaused, "Paused")
                                                 .Case(OperationsState.Finished, "Finished:" + _viewModel.OperationsStateDescription)
                                                 .Case(OperationsState.PreCheck, "Pre-check...")
                                                 .Case(OperationsState.Mutating, "Creating mutants...")
                                                 .Case(OperationsState.Pausing, "Pausing...")
                                                 .Case(OperationsState.Stopping, "Stopping...")
                                                 .Case(OperationsState.Error, "Error occurred.")
                                                 .GetResult();
     }
 }
 public XElement CreateDetailedTestingResults(List <Mutant> mutants, ProgressCounter progress, CancellationToken token)
 {
     return(new XElement("DetailedTestingResults",
                         from mutant in mutants
                         where mutant.MutantTestSession.IsComplete
                         let x = progressAction(progress, token)
                                 let namespaces = _testsContainer.CreateMutantTestTree(mutant)
                                                  let groupedTests = namespaces.GroupBy(m => m.State).ToList()
                                                                     select new XElement("TestedMutant",
                                                                                         new XAttribute("MutantId", mutant.Id),
                                                                                         new XAttribute("TestingTimeMiliseconds", mutant.MutantTestSession.TestingTimeMiliseconds),
                                                                                         new XElement("Tests",
                                                                                                      new XAttribute("NumberOfFailedTests", groupedTests.SingleOrDefault(g => g.Key == TestNodeState.Failure).ToEmptyIfNull().Count()),
                                                                                                      new XAttribute("NumberOfPassedTests", groupedTests.SingleOrDefault(g => g.Key == TestNodeState.Success).ToEmptyIfNull().Count()),
                                                                                                      new XAttribute("NumberOfInconlusiveTests", groupedTests.SingleOrDefault(g => g.Key == TestNodeState.Inconclusive).ToEmptyIfNull().Count()),
                                                                                                      from testClass in namespaces
                                                                                                      .Cast <CheckedNode>().SelectManyRecursive(n => n.Children ?? new NotifyingCollection <CheckedNode>()).OfType <TestNodeClass>()
                                                                                                      let xx = cancellationCheck(token)
                                                                                                               select new XElement("TestClass",
                                                                                                                                   new XAttribute("Name", testClass.Name),
                                                                                                                                   new XAttribute("FullName", testClass.FullName),
                                                                                                                                   from testMethod in testClass.Children.Cast <TestNodeMethod>()
                                                                                                                                   where testMethod.State == TestNodeState.Failure
                                                                                                                                   select new XElement("TestMethod",
                                                                                                                                                       new XAttribute("Name", testMethod.Name),
                                                                                                                                                       new XAttribute("Outcome", "Failed"),
                                                                                                                                                       new XElement("Message", testMethod.Message)),
                                                                                                                                   from testMethod in testClass.Children.Cast <TestNodeMethod>()
                                                                                                                                   where testMethod.State.IsIn(TestNodeState.Success, TestNodeState.Inconclusive)
                                                                                                                                   select new XElement("TestMethod",
                                                                                                                                                       new XAttribute("Name", testMethod.Name),
                                                                                                                                                       new XAttribute("Outcome", FunctionalExt.ValuedSwitch <TestNodeState, string>(testMethod.State)
                                                                                                                                                                      .Case(TestNodeState.Success, "Passed")
                                                                                                                                                                      .Case(TestNodeState.Inconclusive, "Inconclusive")
                                                                                                                                                                      .GetResult())
                                                                                                                                                       )
                                                                                                                                   )
                                                                                                      )
                                                                                         )
                         ));
 }