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()); }
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()) ) ) ) ) )); }