Skip to content

Commit 359e15a

Browse files
committed
line numbers changed
1 parent f56155a commit 359e15a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+711
-614
lines changed

FineCodeCoverageTests/Editor/DynamicCoverage/BufferLineCoverage_Tests.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,9 @@ public void Should_Update_TrackedLines_When_Text_Buffer_ChangedOnBackground(bool
243243

244244
var newSpan = new Span(1, 2);
245245
var mockTrackedLines = new Mock<ITrackedLines>();
246-
mockTrackedLines.Setup(trackedLines => trackedLines.Changed(afterSnapshot, new List<Span> { newSpan })).Returns(textLinesChanged);
246+
var changedLineNumbers = textLinesChanged ? new List<int> { 1, 2 } : new List<int>();
247+
mockTrackedLines.Setup(trackedLines => trackedLines.GetChangedLineNumbers(afterSnapshot, new List<Span> { newSpan }))
248+
.Returns(changedLineNumbers);
247249
autoMoqer.Setup<ITrackedLinesFactory, ITrackedLines>(trackedLinesFactory => trackedLinesFactory.Create(It.IsAny<List<ILine>>(), It.IsAny<ITextSnapshot>(), It.IsAny<Language>()))
248250
.Returns(mockTrackedLines.Object);
249251

@@ -254,7 +256,7 @@ public void Should_Update_TrackedLines_When_Text_Buffer_ChangedOnBackground(bool
254256

255257
autoMoqer.Verify<IEventAggregator>(
256258
eventAggregator => eventAggregator.SendMessage(
257-
It.Is<CoverageChangedMessage>(message => message.AppliesTo == "filepath" && message.CoverageLines == bufferLineCoverage)
259+
It.Is<CoverageChangedMessage>(message => message.AppliesTo == "filepath" && message.CoverageLines == bufferLineCoverage && message.ChangedLineNumbers == changedLineNumbers)
258260
, null
259261
), Times.Exactly(textLinesChanged ? 1 : 0));
260262

FineCodeCoverageTests/Editor/DynamicCoverage/CoverageCodeTracker_Tests.cs

Lines changed: 59 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,23 @@ public void Should_Return_Lines_From_TrackedCoverageLines_When_No_DirtyLine()
3232

3333
}
3434

35+
private static IDynamicLine CreateDynamicLine(int lineNumber)
36+
{
37+
var mockDynamicLine = new Mock<IDynamicLine>();
38+
mockDynamicLine.SetupGet(dynamicLine => dynamicLine.Number).Returns(lineNumber);
39+
return mockDynamicLine.Object;
40+
}
41+
3542
[TestCase(true,true)]
3643
[TestCase(true, false)]
3744
[TestCase(false, true)]
3845
[TestCase(false,false)]
39-
public void Should_Create_The_DirtyLine_And_Be_Changed_When_Text_Changed_And_Intersected(bool textChanged, bool intersected)
46+
public void Should_Create_The_DirtyLine_When_Text_Changed_And_Intersected(bool textChanged, bool intersected)
4047
{
4148
var expectedCreatedDirtyLine = textChanged && intersected;
4249
var textSnapshot = new Mock<ITextSnapshot>().Object;
4350
var newSpanAndLineRanges = new List<SpanAndLineRange> { new SpanAndLineRange(new Span(1, 2), 0, 1) };
4451
var autoMoqer = new AutoMoqer();
45-
var containgCodeTrackerProcessResult = new Mock<IContainingCodeTrackerProcessResult>().Object;
46-
4752

4853
var mockTrackingSpanRange = new Mock<ITrackingSpanRange>();
4954
var firstTrackingSpan = new Mock<ITrackingSpan>().Object;
@@ -65,9 +70,7 @@ public void Should_Create_The_DirtyLine_And_Be_Changed_When_Text_Changed_And_Int
6570
false,
6671
textChanged
6772
);
68-
var updated = coverageCodeTracker.Update(trackingSpanRangeProcessResult, textSnapshot, newSpanAndLineRanges);
69-
70-
Assert.That(updated, Is.EqualTo(expectedCreatedDirtyLine));
73+
coverageCodeTracker.GetUpdatedLineNumbers(trackingSpanRangeProcessResult, textSnapshot, newSpanAndLineRanges);
7174

7275
mockDirtyLineFactory.Verify(
7376
dirtyLineFactory => dirtyLineFactory.Create(firstTrackingSpan, textSnapshot),
@@ -84,15 +87,49 @@ public void Should_Create_The_DirtyLine_And_Be_Changed_When_Text_Changed_And_Int
8487
}
8588
}
8689

90+
[Test]
91+
public void Should_Return_The_Dirty_Line_Number_And_All_Tracked_Line_Numbers_When_Create_Dirty_Line()
92+
{
93+
var textSnapshot = new Mock<ITextSnapshot>().Object;
94+
95+
var autoMoqer = new AutoMoqer();
96+
var coverageLines = new List<IDynamicLine> { CreateDynamicLine(1), CreateDynamicLine(2) };
97+
autoMoqer.Setup<ITrackedCoverageLines, IEnumerable<IDynamicLine>>(
98+
trackedCoverageLines => trackedCoverageLines.Lines
99+
).Returns(coverageLines);
100+
var mockDirtyLineFactory = autoMoqer.GetMock<IDirtyLineFactory>();
101+
var mockDirtyLine = new Mock<ITrackingLine>();
102+
mockDirtyLine.SetupGet(dirtyLine => dirtyLine.Line.Number).Returns(10);
103+
mockDirtyLineFactory.Setup(
104+
dirtyLineFactory => dirtyLineFactory.Create(It.IsAny<ITrackingSpan>(), textSnapshot)
105+
).Returns(mockDirtyLine.Object);
106+
107+
var coverageCodeTracker = autoMoqer.Create<CoverageCodeTracker>();
108+
109+
var trackingSpanRangeProcessResult = new TrackingSpanRangeProcessResult(
110+
new Mock<ITrackingSpanRange>().Object,
111+
new List<SpanAndLineRange>(),
112+
false,
113+
true
114+
);
115+
116+
var updatedLineNumbers = coverageCodeTracker.GetUpdatedLineNumbers(
117+
trackingSpanRangeProcessResult,
118+
textSnapshot,
119+
new List<SpanAndLineRange> { new SpanAndLineRange(new Span(1, 2), 0, 1) });
120+
121+
Assert.That(updatedLineNumbers, Is.EqualTo(new List<int> { 10, 1, 2 }));
122+
}
87123

88-
[TestCase(true)]
89-
[TestCase(false)]
90-
public void Should_Update_TrackedCoverageLines_When_Do_Not_Create_DirtyLine(bool trackedCoverageLinesChanged)
124+
[Test]
125+
public void Should_Update_TrackedCoverageLines_When_Do_Not_Create_DirtyLine()
91126
{
92127
var textSnapshot = new Mock<ITextSnapshot>().Object;
93128
var autoMoqer = new AutoMoqer();
94129
var mockTrackedCoverageLines = autoMoqer.GetMock<ITrackedCoverageLines>();
95-
mockTrackedCoverageLines.Setup(trackedCoverageLines => trackedCoverageLines.Update(textSnapshot)).Returns(trackedCoverageLinesChanged);
130+
var trackedCoverageLinesUpdatedLineNumbers = new List<int> { 1, 2 };
131+
mockTrackedCoverageLines.Setup(trackedCoverageLines => trackedCoverageLines.GetUpdatedLineNumbers(textSnapshot))
132+
.Returns(trackedCoverageLinesUpdatedLineNumbers);
96133
var newSpanAndLineRanges = new List<SpanAndLineRange> { new SpanAndLineRange(new Span(1, 2), 0, 1) };
97134
var trackingSpanRangeProcessResult = new TrackingSpanRangeProcessResult(
98135
new Mock<ITrackingSpanRange>().Object,
@@ -103,21 +140,22 @@ public void Should_Update_TrackedCoverageLines_When_Do_Not_Create_DirtyLine(bool
103140

104141
var coverageCodeTracker = autoMoqer.Create<CoverageCodeTracker>();
105142

106-
var updated = coverageCodeTracker.Update(trackingSpanRangeProcessResult, textSnapshot, newSpanAndLineRanges);
143+
var updatedLineNumbers = coverageCodeTracker.GetUpdatedLineNumbers(trackingSpanRangeProcessResult, textSnapshot, newSpanAndLineRanges);
107144

108-
Assert.That(updated, Is.EqualTo(trackedCoverageLinesChanged));
145+
Assert.That(updatedLineNumbers, Is.SameAs(trackedCoverageLinesUpdatedLineNumbers));
109146
}
110147

111-
[TestCase(true)]
112-
[TestCase(false)]
113-
public void Should_Update_DirtyLine_When_DirtyLine(bool dirtyLineChanged)
148+
[Test]
149+
public void Should_Update_DirtyLine_When_DirtyLine()
114150
{
115151
var textSnapshot2 = new Mock<ITextSnapshot>().Object;
116152
var spanAndLineRange2 = new List<SpanAndLineRange>() { new SpanAndLineRange(new Span(1, 3), 0, 0) };
117153
var autoMoqer = new AutoMoqer();
118154
var mockDirtyLineFactory = autoMoqer.GetMock<IDirtyLineFactory>();
119155
var mockDirtyLine = new Mock<ITrackingLine>();
120-
mockDirtyLine.Setup(dirtyLine => dirtyLine.Update(textSnapshot2)).Returns(dirtyLineChanged);
156+
mockDirtyLine.SetupGet(dirtyLine => dirtyLine.Line.Number).Returns(10);
157+
var dirtyLineUpdatedLineNumbers =new List<int> { 10, 20 };
158+
mockDirtyLine.Setup(dirtyLine => dirtyLine.Update(textSnapshot2)).Returns(dirtyLineUpdatedLineNumbers);
121159
mockDirtyLineFactory.Setup(dirtyLineFactory => dirtyLineFactory.Create(It.IsAny<ITrackingSpan>(), It.IsAny<ITextSnapshot>())).Returns(mockDirtyLine.Object);
122160

123161
var coverageCodeTracker = autoMoqer.Create<CoverageCodeTracker>();
@@ -128,7 +166,7 @@ public void Should_Update_DirtyLine_When_DirtyLine(bool dirtyLineChanged)
128166
false,
129167
true
130168
);
131-
coverageCodeTracker.Update(trackingSpanRangeProcessResult1, new Mock<ITextSnapshot>().Object, new List<SpanAndLineRange>() { new SpanAndLineRange(new Span(1, 2), 0, 0) });
169+
coverageCodeTracker.GetUpdatedLineNumbers(trackingSpanRangeProcessResult1, new Mock<ITextSnapshot>().Object, new List<SpanAndLineRange>() { new SpanAndLineRange(new Span(1, 2), 0, 0) });
132170

133171
var trackingSpanRangeProcessResult2 = new TrackingSpanRangeProcessResult(
134172
new Mock<ITrackingSpanRange>().Object,
@@ -137,9 +175,11 @@ public void Should_Update_DirtyLine_When_DirtyLine(bool dirtyLineChanged)
137175
true
138176
);
139177

140-
var updated = coverageCodeTracker.Update(trackingSpanRangeProcessResult2, textSnapshot2, spanAndLineRange2);
178+
var updatedLineNumbers = coverageCodeTracker.GetUpdatedLineNumbers(
179+
trackingSpanRangeProcessResult2, textSnapshot2, spanAndLineRange2);
180+
181+
Assert.That(updatedLineNumbers, Is.EqualTo(dirtyLineUpdatedLineNumbers));
141182

142-
Assert.That(dirtyLineChanged, Is.EqualTo(updated));
143183
}
144184

145185
}

FineCodeCoverageTests/Editor/DynamicCoverage/CoverageLine_Tests.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using FineCodeCoverage.Editor.DynamicCoverage;
1+
using System.Collections.Generic;
2+
using System.Linq;
3+
using FineCodeCoverage.Editor.DynamicCoverage;
24
using FineCodeCoverage.Engine.Model;
35
using Microsoft.VisualStudio.Text;
46
using Moq;
@@ -39,9 +41,9 @@ public void Should_Be_Updated_If_The_Line_Number_Changes(bool updateLineNumber)
3941
.Returns(updatedLineNumber);
4042
var coverageLine = new CoverageLine(trackingSpan, mockLine.Object, mockLineTracker.Object);
4143

42-
var updated = coverageLine.Update(currentTextSnapshot);
44+
var updatedLineNumbers = coverageLine.Update(currentTextSnapshot);
4345

44-
Assert.That(updated, Is.EqualTo(updateLineNumber));
46+
Assert.That(updatedLineNumbers, Is.EqualTo(updateLineNumber ? new List<int> { 0, 10 } : Enumerable.Empty<int>()));
4547

4648
Assert.That(coverageLine.Line.Number, Is.EqualTo(updatedLineNumber));
4749
}

FineCodeCoverageTests/Editor/DynamicCoverage/DirtyCodeTracker_Tests.cs

Lines changed: 0 additions & 24 deletions
This file was deleted.

0 commit comments

Comments
 (0)