public void Set_HasPreviousItems_HasSomeNewItems_CollectionChangedAndEventRaised()
        {
            var testSubject = CreateTestSubject();

            var issueViz1 = Mock.Of <IAnalysisIssueVisualization>();
            var issueViz2 = Mock.Of <IAnalysisIssueVisualization>();
            var issueViz3 = Mock.Of <IAnalysisIssueVisualization>();

            var oldItems = new[] { issueViz1, issueViz2 };

            testSubject.Set(oldItems, null);

            var callCount = 0;
            IssuesChangedEventArgs suppliedArgs = null;

            testSubject.IssuesChanged += (sender, args) => { callCount++; suppliedArgs = args; };

            var newItems = new[] { issueViz2, issueViz3 };

            testSubject.Set(newItems, null);

            testSubject.GetAll().Should().BeEquivalentTo(newItems);
            callCount.Should().Be(1);
            suppliedArgs.RemovedIssues.Should().BeEquivalentTo(issueViz1);
            suppliedArgs.AddedIssues.Should().BeEquivalentTo(issueViz3);
        }
        public void GetOrAdd_HasSubscribersToIssuesChanged_SubscribersNotified()
        {
            var testSubject = CreateTestSubject();

            var callCount = 0;
            IssuesChangedEventArgs suppliedArgs = null;

            testSubject.IssuesChanged += (sender, args) => { callCount++; suppliedArgs = args; };

            var addedIssueViz = testSubject.GetOrAdd(CreateIssueViz(hotspotKey: "some hotspot"));

            callCount.Should().Be(1);
            suppliedArgs.RemovedIssues.Should().BeEmpty();
            suppliedArgs.AddedIssues.Should().BeEquivalentTo(addedIssueViz);
        }
        public void RefreshErrorList_HasListener_EventRaised()
        {
            var testSubject = CreateTestSubject();
            var factory     = CreateFactoryAndSnapshotWithSpecifiedFiles("file1.txt", "file2.txt");

            testSubject.AddFactory(factory);

            IssuesChangedEventArgs suppliedArgs = null;
            var eventCount = 0;

            testSubject.IssuesChanged += (sender, args) => { suppliedArgs = args; eventCount++; };

            testSubject.RefreshErrorList(factory);

            eventCount.Should().Be(1);
            suppliedArgs.Should().NotBeNull();
            suppliedArgs.AnalyzedFiles.Should().BeEquivalentTo("file1.txt", "file2.txt");
        }
        private void LocationStoreAggregator_IssuesChanged(object sender, IssuesChangedEventArgs e)
        {
            if (selectionService.SelectedIssue == null)
            {
                return;
            }

            var issuesChangedInSelectedFile = e.AnalyzedFiles.Any(x => PathHelper.IsMatchingPath(x, selectionService.SelectedIssue.CurrentFilePath));

            if (issuesChangedInSelectedFile)
            {
                var selectedIssueNoLongerExists = !locationStoreAggregator.Contains(selectionService.SelectedIssue);

                if (selectedIssueNoLongerExists)
                {
                    selectionService.SelectedIssue = null;
                }
            }
        }
        public void Set_HasPreviousItems_NoNewItems_CollectionChangedAndEventRaised()
        {
            var testSubject = CreateTestSubject();

            var oldItems = new[] { Mock.Of <IAnalysisIssueVisualization>(), Mock.Of <IAnalysisIssueVisualization>() };

            testSubject.Set(oldItems, null);

            var callCount = 0;
            IssuesChangedEventArgs suppliedArgs = null;

            testSubject.IssuesChanged += (sender, args) => { callCount++; suppliedArgs = args; };

            testSubject.Set(Enumerable.Empty <IAnalysisIssueVisualization>(), null);

            testSubject.GetAll().Should().BeEmpty();
            callCount.Should().Be(1);
            suppliedArgs.RemovedIssues.Should().BeEquivalentTo(oldItems);
            suppliedArgs.AddedIssues.Should().BeEmpty();
        }
 private void NotifyIssuesChanged(IssuesChangedEventArgs args)
 {
     IssuesChanged?.Invoke(this, args);
 }