public Task<bool> ExecuteAsync(ITaskCoverageManager taskCoverageManager, IVsSolutionTestCoverage vsSolutionTestCoverage, IDocumentProvider documentProvider)
        {
            string methodName = Method.Identifier.ValueText;
            RaiseTaskStartedEvent(taskCoverageManager);

            var documentSyntaxTree = documentProvider.GetSyntaxNodeFromTextSnapshot(TextBuffer.CurrentSnapshot);

            var methodNode = documentSyntaxTree.DescendantNodes()
                .OfType<MethodDeclarationSyntax>()
                .FirstOrDefault(x => x.Identifier.ValueText == methodName);

            if (methodNode == null)
                return Task.FromResult(false);

            Task<bool> task = vsSolutionTestCoverage.CalculateForSelectedMethodAsync(ProjectName, methodNode);

            var finalTask = task.ContinueWith((x, y) =>
            {
                if(!x.Result)
                    taskCoverageManager.ReportTaskToRetry(this);

                RaiseTasCompletedEvent(taskCoverageManager);
                return x.Result;

            }, null, TaskSchedulerManager.Current.FromSynchronizationContext());

            return finalTask;
        }
 public CoverageOverviewViewModel(ITestExplorer testExplorer, ICoverageSettingsStore settingsStore, IVsSolutionTestCoverage vsSolutionTestCoverage)
 {
     _testExplorer = testExplorer;
     _settingsStore = settingsStore;
     _vsSolutionTestCoverage = vsSolutionTestCoverage;
     TestProjects = new ObservableCollection<TestProjectViewModel>();
     RefreshCmd = new DelegateCommand(RefreshAsync);
     ResyncCmd=new DelegateCommand(Resync);
 }
 public TaskCoverageManager(ITimer timer,
     IDocumentProvider documentProvider,
     IVsSolutionTestCoverage vsSolutionTestCoverage)
 {
     _timer = timer;
     _documentProvider = documentProvider;
     _tasks = new List<ITaskCoverageInfo>();
     _vsSolutionTestCoverage = vsSolutionTestCoverage;
 }
        public Task<bool> ExecuteAsync(ITaskCoverageManager taskCoverageManager, IVsSolutionTestCoverage vsSolutionTestCoverage,
            IDocumentProvider documentProvider)
        {
            taskCoverageManager.RaiseEvent(new ResyncAllStarted());
            var task = vsSolutionTestCoverage.CalculateForAllDocumentsAsync();

            var finalTask = task.ContinueWith((finishedTask, y) =>
            {
                taskCoverageManager.RaiseEvent(new ResyncAllCompleted());

                return finishedTask.Result;
            }, null, TaskSchedulerManager.Current.FromSynchronizationContext());

            return finalTask;
        }
        public Task<bool> ExecuteAsync(ITaskCoverageManager taskCoverageManager, IVsSolutionTestCoverage vsSolutionTestCoverage,
            IDocumentProvider documentProvider)
        {
            taskCoverageManager.RaiseEvent(new DocumentCoverageTaskStartedArgs(DocumentPath));

            string documentContent = TextBuffer.CurrentSnapshot.GetText();
            var task = vsSolutionTestCoverage.CalculateForDocumentAsync(ProjectName, DocumentPath, documentContent);

            var finalTask = task.ContinueWith((finishedTask, y) =>
            {
                if (finishedTask.Result)
                    taskCoverageManager.Tasks.RemoveAll(t => IsTaskInDocument(t, DocumentPath));
                else
                    taskCoverageManager.ReportTaskToRetry(this);

                taskCoverageManager.RaiseEvent(new DocumentCoverageTaskCompletedArgs(DocumentPath));

                return finishedTask.Result;
            }, null, TaskSchedulerManager.Current.FromSynchronizationContext());

            return finalTask;
        }
        public void Setup()
        {
            _vsSolutionTestCoverageMock = Substitute.For<IVsSolutionTestCoverage>();
            _timerMock = new TimerMock();
            _documentProviderMock = Substitute.For<IDocumentProvider>();

            var textSnapshotMock = Substitute.For<ITextSnapshot>();
            _textBufferMock = Substitute.For<ITextBuffer>();
            _textBufferMock.CurrentSnapshot.Returns(textSnapshotMock);

            _sut = new TaskCoverageManager(_timerMock, _documentProviderMock, _vsSolutionTestCoverageMock);

            var taskSchedulerMock = Substitute.For<ITaskSchedulerManager>();
            SynchronizationContext.SetSynchronizationContext(new TestSyncContext());
            var synchronizationTaskScheduler = TaskScheduler.FromCurrentSynchronizationContext();
            taskSchedulerMock.FromSynchronizationContext().Returns(synchronizationTaskScheduler);

            TaskSchedulerManager.Current = taskSchedulerMock;
        }