Пример #1
0
        public void OnBatchedTagsChanged_CacheCleanupIsCalled()
        {
            var cacheMock = new Mock <ICachingAdornmentFactory>();

            var snapshot = CreateSnapshot(length: 123);
            var textView = CreateWpfTextView(snapshot);
            var locViz1  = CreateLocationViz();
            var locViz2  = CreateLocationViz();

            // The setup for the aggregator is different for this test since we're using a different
            // overload of "GetTags" from all of the other tests.
            // Here, we're expecting a SnapshotSpan covering the whole snapshot to be passed in
            var wholeSnapshotSpan = new SnapshotSpan(snapshot, 0, snapshot.Length);

            var mappingSpan1   = CreateMappingTagSpan(snapshot, new SelectedIssueLocationTag(locViz1));
            var mappingSpan2   = CreateMappingTagSpan(snapshot, new SelectedIssueLocationTag(locViz2));
            var aggregatorMock = new Mock <ITagAggregator <ISelectedIssueLocationTag> >();

            aggregatorMock.Setup(x => x.GetTags(wholeSnapshotSpan))
            .Returns(new[] { mappingSpan1, mappingSpan2 });

            var testSubject = new IssueLocationAdornmentTagger(aggregatorMock.Object, textView, cacheMock.Object);

            cacheMock.Invocations.Count.Should().Be(0);

            // Act
            RaiseBatchedTagsChanged(aggregatorMock);
            aggregatorMock.Verify(x => x.GetTags(wholeSnapshotSpan), Times.Once);
            cacheMock.Verify(x => x.Refresh(new[] { locViz1, locViz2 }), Times.Once);
        }
Пример #2
0
        public void GetTags_HasSelectedIssueLocationTags_ReturnsExpectedAdornmentTags()
        {
            var snapshot   = CreateSnapshot(length: 50);
            var inputSpans = CreateSpanCollectionSpanningWholeSnapshot(snapshot);

            var selectedLoc1 = CreateLocationViz(snapshot, new Span(1, 5), "selection 1");
            var selectedLoc2 = CreateLocationViz(snapshot, new Span(20, 25), "selection 2");
            var aggregator   = CreateSelectedIssueAggregator(selectedLoc1, selectedLoc2);

            var viewMock = CreateWpfTextView(snapshot);

            var testSubject = new IssueLocationAdornmentTagger(aggregator, viewMock);

            // Act
            var actual = testSubject.GetTags(inputSpans).ToArray();

            actual.Length.Should().Be(2);
            actual[0].Span.Span.Start.Should().Be(selectedLoc1.Span.Value.Span.Start);
            actual[1].Span.Span.Start.Should().Be(selectedLoc2.Span.Value.Span.Start);

            actual[0].Span.Span.Length.Should().Be(0);
            actual[1].Span.Span.Length.Should().Be(0);

            var adornment1 = actual[0].Tag.Adornment as IssueLocationAdornment;

            adornment1.Should().NotBeNull();
            adornment1.LocationViz.Should().Be(selectedLoc1);

            var adornment2 = actual[1].Tag.Adornment as IssueLocationAdornment;

            adornment2.Should().NotBeNull();
            adornment2.LocationViz.Should().Be(selectedLoc2);
        }
Пример #3
0
        public void Ctor_SubscribesToEvents()
        {
            var aggregatorMock = new Mock <ITagAggregator <ISelectedIssueLocationTag> >();

            aggregatorMock.SetupAdd(x => x.BatchedTagsChanged += (sender, args) => { });

            // Act
            var testSubject = new IssueLocationAdornmentTagger(aggregatorMock.Object, ValidTextView);

            var expectedCallCount = Times.Exactly(2); // once for our class, once for the base class

            aggregatorMock.VerifyAdd(x => x.BatchedTagsChanged += It.IsAny <EventHandler <BatchedTagsChangedEventArgs> >(), expectedCallCount);
        }
Пример #4
0
        public void GetTags_NoSelectedIssueLocationTags_ReturnsEmpty()
        {
            var snapshot   = CreateSnapshot(length: 50);
            var inputSpans = CreateSpanCollectionSpanningWholeSnapshot(snapshot);

            var aggregator = CreateSelectedIssueAggregator();
            var viewMock   = CreateWpfTextView(snapshot);

            var testSubject = new IssueLocationAdornmentTagger(aggregator, viewMock);

            // Act
            testSubject.GetTags(inputSpans)
            .Should().BeEmpty();
        }