private static UnconfiguredProjectTasksService CreateInstance(IProjectAsynchronousTasksService tasksService = null, ILoadedInHostListener loadedInHostListener = null)
        {
            tasksService         = tasksService ?? IProjectAsynchronousTasksServiceFactory.Create();
            loadedInHostListener = loadedInHostListener ?? ILoadedInHostListenerFactory.Create();

            return(new UnconfiguredProjectTasksService(tasksService, IProjectThreadingServiceFactory.Create(), loadedInHostListener));
        }
        private static UnconfiguredProjectTasksService CreateInstance(IProjectAsynchronousTasksService?tasksService = null, ILoadedInHostListener?loadedInHostListener = null, ISolutionService?solutionService = null)
        {
            tasksService ??= IProjectAsynchronousTasksServiceFactory.Create();
            loadedInHostListener ??= ILoadedInHostListenerFactory.Create();
            solutionService ??= ISolutionServiceFactory.Create();

            return(new UnconfiguredProjectTasksService(tasksService, IProjectThreadingServiceFactory.Create(), loadedInHostListener, solutionService));
        }
        public void PrioritizedProjectLoadedInHost_WhenProjectUnloaded_ReturnsCancelledTask()
        {
            var tasksService = IProjectAsynchronousTasksServiceFactory.ImplementUnloadCancellationToken(new CancellationToken(true));
            var service      = CreateInstance(tasksService);

            var result = service.PrioritizedProjectLoadedInHost;

            Assert.True(result.IsCanceled);
        }
        public void IsImplicitlyActiveTask_WhenProjectHasUnloaded_ReturnsCanceledTask()
        {
            var cancellationToken = new CancellationToken(canceled: true);
            var tasksService      = IProjectAsynchronousTasksServiceFactory.ImplementUnloadCancellationToken(cancellationToken);

            var service = CreateInstance(tasksService);

            var result = service.IsImplicitlyActiveTask;

            Assert.True(result.IsCanceled);
        }
        public void UnloadCancellationToken_WhenUnderlyingUnloadCancellationTokenCancelled_IsCancelled()
        {
            var source       = new CancellationTokenSource();
            var tasksService = IProjectAsynchronousTasksServiceFactory.ImplementUnloadCancellationToken(source.Token);
            var service      = CreateInstance(tasksService);

            Assert.False(service.UnloadCancellationToken.IsCancellationRequested);

            source.Cancel();

            Assert.True(service.UnloadCancellationToken.IsCancellationRequested);
        }
        private static ConfiguredProjectImplicitActivationTracking CreateInstance(ConfiguredProject project, IProjectAsynchronousTasksService tasksService, out ProjectValueDataSource <IConfigurationGroup <ProjectConfiguration> > source)
        {
            project = project ?? ConfiguredProjectFactory.Create();
            var services = IProjectCommonServicesFactory.CreateWithDefaultThreadingPolicy();

            source = ProjectValueDataSourceFactory.Create <IConfigurationGroup <ProjectConfiguration> >(services);
            var activeConfigurationGroupService = IActiveConfigurationGroupServiceFactory.Implement(source);

            tasksService = tasksService ?? IProjectAsynchronousTasksServiceFactory.Create();

            return(new ConfiguredProjectImplicitActivationTracking(project, activeConfigurationGroupService, tasksService));
        }
        public void IsImplicitlyActiveTask_WhenProjectUnloadCancellationTokenSourceHasBeenDisposed_ReturnsNonCompletedTask()
        {
            var cancellationTokenSource = new CancellationTokenSource();
            var tasksService            = IProjectAsynchronousTasksServiceFactory.ImplementUnloadCancellationToken(cancellationTokenSource.Token);

            cancellationTokenSource.Dispose();

            var service = CreateInstance(tasksService);

            var result = service.IsImplicitlyActiveTask;

            Assert.False(result.IsCompleted);
        }
        public void ImplicitlyActive_WhenProjectUnloadCancellationTokenSourceHasBeenCanceledAndDisposed_ReturnsCanceledTask()
        {
            var cancellationTokenSource = new CancellationTokenSource();
            var tasksService            = IProjectAsynchronousTasksServiceFactory.ImplementUnloadCancellationToken(cancellationTokenSource.Token);

            cancellationTokenSource.Cancel();
            cancellationTokenSource.Dispose();

            var service = CreateInstance(tasksService);

            var result = service.ImplicitlyActive;

            Assert.True(result.IsCanceled);
        }