Exemple #1
0
        public void GetTags_TagsMatchSelectedIssuesLocations_CreatesExpectedTags()
        {
            var snapshot   = CreateSnapshot(length: 50);
            var inputSpans = CreateSpanCollectionSpanningWholeSnapshot(snapshot);

            var matchingLoc1 = CreateLocationViz(snapshot, new Span(1, 5), "match 1");
            var matchingLoc2 = CreateLocationViz(snapshot, new Span(20, 25), "match 2");
            var noMatch1     = CreateLocationViz(snapshot, new Span(10, 5), "no match 1");
            var noMatch2     = CreateLocationViz(snapshot, new Span(12, 5), "no match 2");

            var selectionService = CreateSelectionService(matchingLoc1, matchingLoc2, noMatch1);
            var aggregator       = CreateLocationAggregator(noMatch2, matchingLoc1, matchingLoc2);

            var testSubject = new SelectedIssueLocationTagger(aggregator, snapshot.TextBuffer, selectionService);

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

            actual.Length.Should().Be(2);
            actual[0].Tag.Location.Should().Be(matchingLoc1);
            actual[0].Span.Should().Be(matchingLoc1.Span.Value);

            actual[1].Tag.Location.Should().Be(matchingLoc2);
            actual[1].Tag.Location.Should().Be(matchingLoc2);
            actual[1].Span.Should().Be(matchingLoc2.Span.Value);
        }
Exemple #2
0
        public void OnSelectionChanged_ChangeLevelIsLocation_EditorIsNotNotified()
        {
            var selectionServiceMock = new Mock <IAnalysisIssueSelectionService>();
            var testSubject          = new SelectedIssueLocationTagger(ValidAggregator, ValidBuffer, selectionServiceMock.Object);

            var tagsChangedEventCount = 0;

            testSubject.TagsChanged += (sender, args) => tagsChangedEventCount++;

            // Act
            selectionServiceMock.Raise(x => x.SelectionChanged += null, new SelectionChangedEventArgs(SelectionChangeLevel.Location, null, null, null));

            tagsChangedEventCount.Should().Be(0);
        }
Exemple #3
0
        public void GetTags_NoSelectedFlow_ReturnsEmpty()
        {
            var snapshot   = CreateSnapshot(length: 50);
            var inputSpans = CreateSpanCollectionSpanningWholeSnapshot(snapshot);

            var selectionServiceMock = new Mock <IAnalysisIssueSelectionService>();

            selectionServiceMock.Setup(x => x.SelectedFlow).Returns((IAnalysisIssueFlowVisualization)null); // no selected flow

            var locViz     = CreateLocationViz(snapshot, new Span(1, 1), "tagged location");
            var aggregator = CreateLocationAggregator(locViz);

            var testSubject = new SelectedIssueLocationTagger(aggregator, snapshot.TextBuffer, selectionServiceMock.Object);

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

            actual.Should().BeEmpty();
        }
Exemple #4
0
        public void OnSelectionChanged_ChangeLevelIsNotLocation_EditorIsNotified(SelectionChangeLevel changeLevel)
        {
            var selectionServiceMock = new Mock <IAnalysisIssueSelectionService>();
            var testSubject          = new SelectedIssueLocationTagger(ValidAggregator, ValidBuffer, selectionServiceMock.Object);

            var tagsChangedEventCount             = 0;
            SnapshotSpanEventArgs actualEventArgs = null;

            testSubject.TagsChanged += (sender, args) => { tagsChangedEventCount++; actualEventArgs = args; };

            // Act
            selectionServiceMock.Raise(x => x.SelectionChanged += null, new SelectionChangedEventArgs(changeLevel, null, null, null));

            tagsChangedEventCount.Should().Be(1);
            actualEventArgs.Should().NotBeNull();
            actualEventArgs.Span.Start.Position.Should().Be(0);
            actualEventArgs.Span.End.Position.Should().Be(ValidBuffer.CurrentSnapshot.Length);
            actualEventArgs.Span.Snapshot.Should().Be(ValidBuffer.CurrentSnapshot);
        }
Exemple #5
0
        public void GetTags_NoMatchingLocations_ReturnsEmpty()
        {
            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 selectionService = CreateSelectionService(selectedLoc1, selectedLoc2);

            var taggedLoc1 = CreateLocationViz(snapshot, new Span(10, 5), "tag 1");
            var taggedLoc2 = CreateLocationViz(snapshot, new Span(12, 5), "tag 1 ");
            var aggregator = CreateLocationAggregator(taggedLoc1, taggedLoc2);

            var testSubject = new SelectedIssueLocationTagger(aggregator, snapshot.TextBuffer, selectionService);

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

            actual.Should().BeEmpty();
        }
Exemple #6
0
        public void Dispose_UnsubscribesFromEvents()
        {
            var aggregatorMock = new Mock <ITagAggregator <IIssueLocationTag> >();

            aggregatorMock.SetupRemove(x => x.BatchedTagsChanged -= (sender, args) => { });

            var bufferMock = CreateBufferMock();

            var selectionServiceMock = new Mock <IAnalysisIssueSelectionService>();

            selectionServiceMock.SetupRemove(x => x.SelectionChanged -= (sender, args) => { });

            var testSubject = new SelectedIssueLocationTagger(aggregatorMock.Object, bufferMock.Object, selectionServiceMock.Object);

            // Act
            testSubject.Dispose();

            aggregatorMock.VerifyRemove(x => x.BatchedTagsChanged     -= It.IsAny <EventHandler <BatchedTagsChangedEventArgs> >(), Times.Once);
            selectionServiceMock.VerifyRemove(x => x.SelectionChanged -= It.IsAny <EventHandler <SelectionChangedEventArgs> >(), Times.Once);
            bufferMock.Invocations.Count.Should().Be(0);
        }
Exemple #7
0
        public void Ctor_SubscribesToEvents()
        {
            var aggregatorMock = new Mock <ITagAggregator <IIssueLocationTag> >();

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

            var bufferMock = CreateBufferMock();

            var selectionServiceMock = new Mock <IAnalysisIssueSelectionService>();

            selectionServiceMock.SetupAdd(x => x.SelectionChanged += (sender, args) => { });

            // Act
            var testSubject = new SelectedIssueLocationTagger(aggregatorMock.Object, bufferMock.Object, selectionServiceMock.Object);

            aggregatorMock.VerifyAdd(x => x.BatchedTagsChanged     += It.IsAny <EventHandler <BatchedTagsChangedEventArgs> >(), Times.Once);
            selectionServiceMock.VerifyAdd(x => x.SelectionChanged += It.IsAny <EventHandler <SelectionChangedEventArgs> >(), Times.Once);

            // Should not listen to any buffer events
            bufferMock.Invocations.Count.Should().Be(0);
            bufferMock.VerifyAdd(x => x.ChangedLowPriority += It.IsAny <EventHandler <TextContentChangedEventArgs> >(), Times.Never);
        }