Skip to content

Commit d998aff

Browse files
committed
backup
1 parent ac1650c commit d998aff

File tree

7 files changed

+699
-726
lines changed

7 files changed

+699
-726
lines changed

FineCodeCoverageTests/Editor/DynamicCoverage/ContainingCodeTrackedLinesBuilder_Tests.cs

Lines changed: 655 additions & 703 deletions
Large diffs are not rendered by default.

SharedProject/Editor/DynamicCoverage/TrackedLines/ContainingCodeTrackedLinesFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace FineCodeCoverage.Editor.DynamicCoverage
88
[Export(typeof(IContainingCodeTrackedLinesFactory))]
99
internal class ContainingCodeTrackedLinesFactory : IContainingCodeTrackedLinesFactory
1010
{
11-
public TrackedLines Create(
11+
public IContainingCodeTrackerTrackedLines Create(
1212
List<IContainingCodeTracker> containingCodeTrackers,
1313
INewCodeTracker newCodeTracker,
1414
IFileCodeSpanRangeService fileCodeSpanRangeService
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using System.Collections.Generic;
2+
3+
namespace FineCodeCoverage.Editor.DynamicCoverage
4+
{
5+
internal interface IContainingCodeTrackerTrackedLines : ITrackedLines
6+
{
7+
IReadOnlyList<IContainingCodeTracker> ContainingCodeTrackers { get; }
8+
}
9+
}

SharedProject/Editor/DynamicCoverage/TrackedLines/TrackedLines.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
namespace FineCodeCoverage.Editor.DynamicCoverage
77
{
8-
internal class TrackedLines : ITrackedLines
8+
internal class TrackedLines : IContainingCodeTrackerTrackedLines
99
{
1010
private readonly List<IContainingCodeTracker> containingCodeTrackers;
1111
private readonly INewCodeTracker newCodeTracker;

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

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,18 @@ private ICoverageContentType GetCoverageContentType(ITextSnapshot textSnapshot)
4747
private IFileCodeSpanRangeService GetFileCodeSpanRangeServiceForChanges(ICoverageContentType coverageContentType)
4848
=> coverageContentType.UseFileCodeSpanRangeServiceForChanges ? coverageContentType.FileCodeSpanRangeService : null;
4949

50+
private INewCodeTracker GetNewCodeTrackerIfProvidesLineExcluder(ILineExcluder lineExcluder)
51+
=> lineExcluder == null ? null : this.newCodeTrackerFactory.Create(lineExcluder);
52+
5053
public ITrackedLines Create(List<ILine> lines, ITextSnapshot textSnapshot)
5154
{
5255
ICoverageContentType coverageContentType = this.GetCoverageContentType(textSnapshot);
5356
IFileCodeSpanRangeService fileCodeSpanRangeService = coverageContentType.FileCodeSpanRangeService;
5457
List<IContainingCodeTracker> containingCodeTrackers = this.CreateContainingCodeTrackers(
5558
lines, textSnapshot, fileCodeSpanRangeService, coverageContentType.CoverageOnlyFromFileCodeSpanRangeService);
56-
ILineExcluder lineExcluder = coverageContentType.LineExcluder;
57-
INewCodeTracker newCodeTracker = lineExcluder == null ? null : this.newCodeTrackerFactory.Create(lineExcluder);
5859
return this.containingCodeTrackedLinesFactory.Create(
5960
containingCodeTrackers,
60-
newCodeTracker,
61+
this.GetNewCodeTrackerIfProvidesLineExcluder(coverageContentType.LineExcluder),
6162
this.GetFileCodeSpanRangeServiceForChanges(coverageContentType));
6263
}
6364

@@ -105,10 +106,12 @@ bool coverageOnlyFromFileCodeSpanRangeService
105106
)
106107
{
107108
var containingCodeTrackers = new List<IContainingCodeTracker>();
108-
int currentLine = 0;
109-
// this should not happen - just in case missed
109+
int nextPossibleOtherLine = 0;
110+
// this should not happen for Roslyn - just in case missed.
111+
// for Blazor ignore the coverage lines that are not related to executable code visible in @code block
110112
void CreateSingleLineContainingCodeTrackerInCase(ILine line)
111113
{
114+
nextPossibleOtherLine = line.Number;
112115
if (!coverageOnlyFromFileCodeSpanRangeService)
113116
{
114117
containingCodeTrackers.Add(this.CreateSingleLineContainingCodeTracker(textSnapshot, line));
@@ -133,17 +136,17 @@ void TrackOtherLines()
133136
{
134137
int to = currentCodeSpanRange.StartLine - 1;
135138
TrackOtherLinesTo(to);
136-
currentLine = currentCodeSpanRange.EndLine + 1;
139+
nextPossibleOtherLine = currentCodeSpanRange.EndLine + 1;
137140
}
138141

139142
void TrackOtherLinesTo(int to)
140143
{
141-
if (to < currentLine) return;
142-
IEnumerable<int> otherCodeLines = Enumerable.Range(currentLine, to - currentLine + 1);
144+
if (to < nextPossibleOtherLine) return;
145+
IEnumerable<int> otherCodeLines = Enumerable.Range(nextPossibleOtherLine, to - nextPossibleOtherLine + 1);
143146
foreach (int otherCodeLine in otherCodeLines)
144147
{
145-
string lineText = this.textSnapshotText.GetLineText(textSnapshot, otherCodeLine).Trim();
146-
if (!string.IsNullOrEmpty(lineText)){
148+
string lineText = this.textSnapshotText.GetLineText(textSnapshot, otherCodeLine);
149+
if (!string.IsNullOrWhiteSpace(lineText)){
147150
containingCodeTrackers.Add(
148151
this.CreateOtherLines(
149152
textSnapshot,
@@ -205,18 +208,25 @@ void LineAction(ILine line)
205208

206209
TrackOtherLinesTo(textSnapshot.LineCount - 1);
207210

208-
var orderedContainingCodeTrackers = containingCodeTrackers.OrderBy(ct => ct.GetState().CodeSpanRange.StartLine).ToList();
211+
var orderedContainingCodeTrackers = containingCodeTrackers.OrderBy(
212+
ct => ct.GetState().CodeSpanRange.StartLine).ToList();
209213
return orderedContainingCodeTrackers;
210214
}
211215

216+
#region Serialization
217+
212218
private ITrackedLines RecreateTrackedLinesFromStates(
213219
List<SerializedState> states,
214-
ITextSnapshot currentSnapshot
220+
ITextSnapshot currentSnapshot,
221+
ILineExcluder lineExcluder
215222
)
216223
{
217224
var containingCodeTrackers = this.StatesWithinSnapshot(states, currentSnapshot)
218225
.Select(state => this.RecreateCoverageLines(state, currentSnapshot)).ToList();
219-
return this.containingCodeTrackedLinesFactory.Create(containingCodeTrackers, null, null);
226+
return this.containingCodeTrackedLinesFactory.Create(
227+
containingCodeTrackers,
228+
this.GetNewCodeTrackerIfProvidesLineExcluder(lineExcluder),
229+
null);
220230
}
221231

222232
private IEnumerable<SerializedState> StatesWithinSnapshot(IEnumerable<SerializedState> states, ITextSnapshot currentSnapshot)
@@ -292,21 +302,21 @@ private IEnumerable<int> EveryLineInCodeSpanRanges(List<CodeSpanRange> newCodeCo
292302
public ITrackedLines Create(string serializedCoverage, ITextSnapshot currentSnapshot)
293303
{
294304
List<SerializedState> states = this.jsonConvertService.DeserializeObject<List<SerializedState>>(serializedCoverage);
295-
ICoverageContentType coverageContextType = this.GetCoverageContentType(currentSnapshot);
296-
IFileCodeSpanRangeService fileCodeSpanRangeService = coverageContextType.FileCodeSpanRangeService;
305+
ICoverageContentType coverageContentType = this.GetCoverageContentType(currentSnapshot);
306+
IFileCodeSpanRangeService fileCodeSpanRangeService = coverageContentType.FileCodeSpanRangeService;
297307
return fileCodeSpanRangeService == null
298-
? this.RecreateTrackedLinesFromStates(states, currentSnapshot)
299-
: this.RecreateTrackedLinesFromCoverageContentType(states, currentSnapshot, coverageContextType);
308+
? this.RecreateTrackedLinesFromStates(states, currentSnapshot, coverageContentType.LineExcluder)
309+
: this.RecreateTrackedLinesFromCoverageContentType(states, currentSnapshot, coverageContentType);
300310
}
301311

302312
public string Serialize(ITrackedLines trackedLines)
303313
{
304-
var trackedLinesImpl = trackedLines as TrackedLines;
305-
List<SerializedState> states = this.GetSerializedStates(trackedLinesImpl);
314+
var containingCodeTrackerTrackedLines = trackedLines as IContainingCodeTrackerTrackedLines;
315+
List<SerializedState> states = this.GetSerializedStates(containingCodeTrackerTrackedLines);
306316
return this.jsonConvertService.SerializeObject(states);
307317
}
308318

309-
private List<SerializedState> GetSerializedStates(TrackedLines trackedLines)
319+
private List<SerializedState> GetSerializedStates(IContainingCodeTrackerTrackedLines trackedLines)
310320
=> trackedLines.ContainingCodeTrackers.Select(
311321
containingCodeTracker => SerializedState.From(containingCodeTracker.GetState())).ToList();
312322

@@ -322,5 +332,6 @@ public AdjustedLine(IDynamicLine dynamicLine)
322332

323333
public CoverageType CoverageType { get; }
324334
}
335+
#endregion
325336
}
326337
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ namespace FineCodeCoverage.Editor.DynamicCoverage
44
{
55
internal interface IContainingCodeTrackedLinesFactory
66
{
7-
TrackedLines Create(
7+
IContainingCodeTrackerTrackedLines Create(
88
List<IContainingCodeTracker> containingCodeTrackers,
99
INewCodeTracker newCodeTracker,
1010
IFileCodeSpanRangeService fileCodeSpanRangeService

SharedProject/SharedProject.projitems

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@
210210
<Compile Include="$(MSBuildThisFileDirectory)Editor\DynamicCoverage\TrackedLinesImpl\ContainingCodeTracker\TrackingSpanRangeUpdatingTracker.cs" />
211211
<Compile Include="$(MSBuildThisFileDirectory)Editor\DynamicCoverage\TrackedLines\ContainingCodeTrackerState.cs" />
212212
<Compile Include="$(MSBuildThisFileDirectory)Editor\DynamicCoverage\TrackedLines\ContainingCodeTrackerType.cs" />
213+
<Compile Include="$(MSBuildThisFileDirectory)Editor\DynamicCoverage\TrackedLines\IContainingCodeTrackerTrackedLines.cs" />
213214
<Compile Include="$(MSBuildThisFileDirectory)Editor\DynamicCoverage\TrackedLines\IContainingCodeTrackerProcessResult.cs" />
214215
<Compile Include="$(MSBuildThisFileDirectory)Editor\DynamicCoverage\TrackedLines\IFileCodeSpanRangeService.cs" />
215216
<Compile Include="$(MSBuildThisFileDirectory)Editor\DynamicCoverage\Utilities\ITextInfo.cs" />

0 commit comments

Comments
 (0)