@@ -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 }
0 commit comments