1
1
using AutoMoq ;
2
2
using FineCodeCoverage . Core . Utilities ;
3
3
using FineCodeCoverage . Editor . DynamicCoverage ;
4
+ using FineCodeCoverage . Editor . IndicatorVisibility ;
4
5
using FineCodeCoverage . Editor . Tagging . Base ;
5
6
using FineCodeCoverage . Engine . Model ;
6
7
using FineCodeCoverageTests . Editor . Tagging . Base . Types ;
11
12
using NUnit . Framework ;
12
13
using System ;
13
14
using System . Collections . Generic ;
15
+ using System . Linq ;
14
16
using LineSpan = FineCodeCoverageTests . Editor . Tagging . Types . LineSpan ;
15
17
16
18
namespace FineCodeCoverageTests . Editor . Tagging . Base
@@ -122,7 +124,8 @@ public void Should_HasCoverage_When_Has(bool hasCoverage)
122
124
new Mock < ICoverageTypeFilter > ( ) . Object ,
123
125
new Mock < IEventAggregator > ( ) . Object ,
124
126
new Mock < ILineSpanLogic > ( MockBehavior . Strict ) . Object ,
125
- new Mock < ILineSpanTagger < DummyTag > > ( ) . Object
127
+ new Mock < ILineSpanTagger < DummyTag > > ( ) . Object ,
128
+ new Mock < IFileIndicatorVisibility > ( ) . Object
126
129
) ;
127
130
128
131
Assert . That ( coverageTagger . HasCoverage , Is . EqualTo ( hasCoverage ) ) ;
@@ -161,7 +164,8 @@ public void Should_Not_Raise_TagsChanged_For_CoverageTypeFilterChangedMessage_If
161
164
new DummyCoverageTypeFilter ( ) ,
162
165
new Mock < IEventAggregator > ( ) . Object ,
163
166
new Mock < ILineSpanLogic > ( MockBehavior . Strict ) . Object ,
164
- new Mock < ILineSpanTagger < DummyTag > > ( ) . Object
167
+ new Mock < ILineSpanTagger < DummyTag > > ( ) . Object ,
168
+ new Mock < IFileIndicatorVisibility > ( ) . Object
165
169
) ;
166
170
167
171
var tagsChanged = false ;
@@ -185,7 +189,8 @@ public void Should_Return_No_Tags_If_No_Coverage_Lines()
185
189
new Mock < ICoverageTypeFilter > ( ) . Object ,
186
190
new Mock < IEventAggregator > ( ) . Object ,
187
191
new Mock < ILineSpanLogic > ( MockBehavior . Strict ) . Object ,
188
- new Mock < ILineSpanTagger < DummyTag > > ( ) . Object
192
+ new Mock < ILineSpanTagger < DummyTag > > ( ) . Object ,
193
+ new Mock < IFileIndicatorVisibility > ( ) . Object
189
194
) ;
190
195
191
196
var tags = coverageTagger . GetTags ( new NormalizedSnapshotSpanCollection ( ) ) ;
@@ -219,7 +224,7 @@ public void Should_GetLineSpans_From_LineSpanLogic_For_The_Spans_When_Coverage_A
219
224
mockTextSnapshot . SetupGet ( currentSnapshot => currentSnapshot . Length ) . Returns ( 10 ) ;
220
225
mockTextInfo . SetupGet ( textBufferAndFile => textBufferAndFile . TextBuffer . CurrentSnapshot ) . Returns ( mockTextSnapshot . Object ) ;
221
226
mockTextInfo . SetupGet ( textBufferWithFilePath => textBufferWithFilePath . FilePath ) . Returns ( "filepath" ) ;
222
-
227
+ autoMoqer . Setup < IFileIndicatorVisibility , bool > ( fileIndicatorVisibility => fileIndicatorVisibility . IsVisible ( It . IsAny < string > ( ) ) ) . Returns ( true ) ;
223
228
var coverageTagger = autoMoqer . Create < CoverageTagger < DummyTag > > ( ) ;
224
229
var spans = new NormalizedSnapshotSpanCollection ( ) ;
225
230
@@ -270,6 +275,8 @@ public void Should_GetTagsSpans_For_Filtered_LineSpans()
270
275
)
271
276
. Returns ( lineSpans ) ;
272
277
278
+ autoMoqer . Setup < ITextInfo , string > ( textInfo => textInfo . FilePath ) . Returns ( "filepath" ) ;
279
+ autoMoqer . Setup < IFileIndicatorVisibility , bool > ( fileIndicatorVisibility => fileIndicatorVisibility . IsVisible ( "filepath" ) ) . Returns ( true ) ;
273
280
var coverageTagger = autoMoqer . Create < CoverageTagger < DummyTag > > ( ) ;
274
281
275
282
var tags = coverageTagger . GetTags ( new NormalizedSnapshotSpanCollection ( ) ) ;
@@ -285,5 +292,65 @@ IDynamicLine CreateLine(DynamicCoverageType coverageType)
285
292
}
286
293
287
294
}
295
+
296
+ [ TestCase ( true , false ) ]
297
+ [ TestCase ( false , true ) ]
298
+ public void Should_Raise_TagsChanged_When_FileIndicatorVisibility_Toggled ( bool newVisibility , bool expectedTagsChanged )
299
+ {
300
+ var autoMoqer = new AutoMoqer ( ) ;
301
+ var mockTextBuffer = new Mock < ITextBuffer2 > ( ) ;
302
+ var mockSnapshot = new Mock < ITextSnapshot > ( ) ;
303
+ mockSnapshot . SetupGet ( textSnapshot => textSnapshot . Length ) . Returns ( 10 ) ;
304
+ mockTextBuffer . SetupGet ( textBuffer => textBuffer . CurrentSnapshot ) . Returns ( mockSnapshot . Object ) ;
305
+ autoMoqer . Setup < ITextInfo , string > ( textInfo => textInfo . FilePath ) . Returns ( "filepath" ) ;
306
+ autoMoqer . Setup < ITextInfo , ITextBuffer > ( textInfo => textInfo . TextBuffer ) . Returns ( mockTextBuffer . Object ) ;
307
+ var mockFileIndicatorVisibility = autoMoqer . GetMock < IFileIndicatorVisibility > ( ) ;
308
+ mockFileIndicatorVisibility . SetupSequence ( fileIndicatorVisibility => fileIndicatorVisibility . IsVisible ( "filepath" ) )
309
+ . Returns ( true )
310
+ . Returns ( newVisibility ) ;
311
+ var coverageTagger = autoMoqer . Create < CoverageTagger < DummyTag > > ( ) ;
312
+ var tagsChanged = false ;
313
+ coverageTagger . TagsChanged += ( sender , args ) =>
314
+ {
315
+ tagsChanged = true ;
316
+ } ;
317
+ mockFileIndicatorVisibility . Raise ( fileIndicatorVisibility => fileIndicatorVisibility . VisibilityChanged += null , EventArgs . Empty ) ;
318
+
319
+ Assert . That ( tagsChanged , Is . EqualTo ( expectedTagsChanged ) ) ;
320
+ }
321
+
322
+ [ TestCase ( true ) ]
323
+ [ TestCase ( false ) ]
324
+ public void Should_Have_No_Tags_When_FileIndicatorVisibility_Is_Initially_False ( bool initiallyVisible )
325
+ {
326
+ var autoMoqer = new AutoMoqer ( ) ;
327
+ autoMoqer . Setup < ICoverageTypeFilter , bool > ( coverageTypeFilter => coverageTypeFilter . Show ( DynamicCoverageType . Covered ) ) . Returns ( true ) ;
328
+ var mockLineSpan = new Mock < ILineSpan > ( ) ;
329
+ mockLineSpan . SetupGet ( lineSpan => lineSpan . Line . CoverageType ) . Returns ( DynamicCoverageType . Covered ) ;
330
+ autoMoqer . Setup < ILineSpanLogic , IEnumerable < ILineSpan > > ( lineSpanLogic =>
331
+ lineSpanLogic . GetLineSpans ( It . IsAny < IBufferLineCoverage > ( ) , It . IsAny < NormalizedSnapshotSpanCollection > ( ) )
332
+ ) . Returns ( new List < ILineSpan > { mockLineSpan . Object } ) ;
333
+
334
+ var mockFileIndicatorVisibility = autoMoqer . GetMock < IFileIndicatorVisibility > ( ) ;
335
+ mockFileIndicatorVisibility . Setup ( fileIndicatorVisibility => fileIndicatorVisibility . IsVisible ( It . IsAny < string > ( ) ) )
336
+ . Returns ( initiallyVisible ) ;
337
+ var coverageTagger = autoMoqer . Create < CoverageTagger < DummyTag > > ( ) ;
338
+
339
+ var tags = coverageTagger . GetTags ( new NormalizedSnapshotSpanCollection ( ) ) . ToList ( ) ;
340
+
341
+ Assert . That ( tags . Count , Is . EqualTo ( initiallyVisible ? 1 : 0 ) ) ;
342
+ }
343
+
344
+ [ Test ]
345
+ public void Should_Remove_FileIndicatorVisibility_VisibilityChange_Handler_When_Dispose ( )
346
+ {
347
+ var autoMoqer = new AutoMoqer ( ) ;
348
+ var mockFileIndicatorVisibility = autoMoqer . GetMock < IFileIndicatorVisibility > ( ) ;
349
+
350
+ var coverageTagger = autoMoqer . Create < CoverageTagger < DummyTag > > ( ) ;
351
+ coverageTagger . Dispose ( ) ;
352
+
353
+ mockFileIndicatorVisibility . VerifyRemove ( fileIndicatorVisibility => fileIndicatorVisibility . VisibilityChanged -= It . IsAny < EventHandler > ( ) ) ;
354
+ }
288
355
}
289
356
}
0 commit comments