Skip to content

Commit f56155a

Browse files
committed
Distinct codespanrange
1 parent 0e0ed80 commit f56155a

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

FineCodeCoverageTests/Editor/DynamicCoverage/ContainingCodeTrackedLinesBuilder_Tests.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -753,24 +753,28 @@ public void Should_Deserialize_Dependent_Upon_AppOption_EditorCoverageColouringM
753753
}
754754

755755
[Test]
756-
public void Should_IFileCodeSpanRangeService_Using_Roslyn()
756+
public void Should_IFileCodeSpanRangeService_Using_Roslyn_Distinct()
757757
{
758758
var mockTextSnapshot = new Mock<ITextSnapshot>();
759759
mockTextSnapshot.Setup(textSnaphot => textSnaphot.GetLineNumberFromPosition(1)).Returns(1);
760-
mockTextSnapshot.Setup(textSnaphot => textSnaphot.GetLineNumberFromPosition(11)).Returns(5);
761-
760+
mockTextSnapshot.Setup(textSnaphot => textSnaphot.GetLineNumberFromPosition(11)).Returns(1);
761+
mockTextSnapshot.Setup(textSnaphot => textSnaphot.GetLineNumberFromPosition(15)).Returns(1);
762+
mockTextSnapshot.Setup(textSnaphot => textSnaphot.GetLineNumberFromPosition(20)).Returns(1);
763+
mockTextSnapshot.Setup(textSnaphot => textSnaphot.GetLineNumberFromPosition(30)).Returns(2);
764+
mockTextSnapshot.Setup(textSnaphot => textSnaphot.GetLineNumberFromPosition(40)).Returns(3);
765+
762766
var autoMoqer = new AutoMoqer();
763767
var mockRoslynService = autoMoqer.GetMock<IRoslynService>();
764768
mockRoslynService.Setup(roslynService => roslynService.GetContainingCodeSpansAsync(mockTextSnapshot.Object))
765-
.ReturnsAsync(new List<TextSpan> { new TextSpan(1, 10) });
769+
.ReturnsAsync(new List<TextSpan> { new TextSpan(1, 10), new TextSpan(15,5),new TextSpan(30,10) });
766770

767771
autoMoqer.SetInstance<IThreadHelper>(new TestThreadHelper());
768772

769773
var containingCodeTrackedLinesBuilder = autoMoqer.Create<ContainingCodeTrackedLinesBuilder>();
770774

771775
var fileCodeSpanRanges = containingCodeTrackedLinesBuilder.GetFileCodeSpanRanges(mockTextSnapshot.Object);
772-
773-
Assert.That(fileCodeSpanRanges.Single().Equals(new CodeSpanRange(1, 5)));
776+
777+
Assert.That(fileCodeSpanRanges, Is.EqualTo(new List<CodeSpanRange> { CodeSpanRange.SingleLine(1), new CodeSpanRange(2, 3) }));
774778
}
775779
}
776780
}

SharedProject/Editor/DynamicCoverage/TrackedLinesImpl/Construction/ContainingCodeTrackedLinesBuilder.cs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ private List<IContainingCodeTracker> CreateRoslynContainingCodeTrackers(List<ILi
108108
void CreateSingleLineContainingCodeTrackerInCase(ILine line)
109109
=> containingCodeTrackers.Add(this.CreateSingleLineContainingCodeTracker(textSnapshot, line));
110110

111-
List<TextSpan> roslynContainingCodeSpans = this.threadHelper.JoinableTaskFactory.Run(() => this.roslynService.GetContainingCodeSpansAsync(textSnapshot));
111+
List<CodeSpanRange> codeSpanRanges = this.GetRoslynCodeSpanRanges(textSnapshot);
112112
int currentCodeSpanIndex = -1;
113113
CodeSpanRange currentCodeSpanRange = null;
114114
SetNextCodeSpanRange();
@@ -118,13 +118,9 @@ void SetNextCodeSpanRange()
118118
{
119119
currentCodeSpanIndex++;
120120
CodeSpanRange previousCodeSpanRange = currentCodeSpanRange;
121-
currentCodeSpanRange = currentCodeSpanIndex < roslynContainingCodeSpans.Count
122-
? this.GetCodeSpanRange(roslynContainingCodeSpans[currentCodeSpanIndex], textSnapshot)
121+
currentCodeSpanRange = currentCodeSpanIndex < codeSpanRanges.Count
122+
? codeSpanRanges[currentCodeSpanIndex]
123123
: null;
124-
if (currentCodeSpanRange != null && previousCodeSpanRange != null && previousCodeSpanRange.Equals(currentCodeSpanRange))
125-
{
126-
SetNextCodeSpanRange();
127-
}
128124
}
129125

130126
void TrackOtherLines()
@@ -230,7 +226,7 @@ private List<ILine> AdjustCoverageLines(List<DynamicLine> dynamicLines)
230226
private List<CodeSpanRange> GetRoslynCodeSpanRanges(ITextSnapshot currentSnapshot)
231227
{
232228
List<TextSpan> roslynContainingCodeSpans = this.threadHelper.JoinableTaskFactory.Run(() => this.roslynService.GetContainingCodeSpansAsync(currentSnapshot));
233-
return roslynContainingCodeSpans.Select(roslynCodeSpan => this.GetCodeSpanRange(roslynCodeSpan, currentSnapshot)).ToList();
229+
return roslynContainingCodeSpans.Select(roslynCodeSpan => this.GetCodeSpanRange(roslynCodeSpan, currentSnapshot)).Distinct().ToList();
234230
}
235231

236232
private List<IContainingCodeTracker> RecreateContainingCodeTrackersWithUnchangedCodeSpanRange(

0 commit comments

Comments
 (0)