private void AppendContextsToRegister(IEnumerable <string> contexts) { foreach (var context in contexts) { if (!contextsToRegister.Contains(context)) { contextsToRegister.Enqueue(context); } } }
internal static Moq.Mock <IBackgroundTaskQueue> MockBackgroundTaskQueue(IHashesRepository repository) { // Arrange var workItems = new System.Collections.Concurrent.ConcurrentQueue <IBaseBackgroundOperation>(); Moq.Mock <IBackgroundTaskQueue> back_tasks_mock = new Moq.Mock <IBackgroundTaskQueue>(); Moq.Mock <IBackgroundOperationService> serv_mock = new Moq.Mock <IBackgroundOperationService>(); serv_mock.Setup(r => r.StartAsync(Moq.It.IsAny <CancellationToken>())) .Returns <CancellationToken>(async(token) => { foreach (var wi in workItems) { switch (wi) { case CalculateHashesInfoBackgroundOperation calc_hash_op: await repository.CalculateHashesInfo(null, null, default); if (workItems.Contains(wi)) { if (back_tasks_mock.Object != null && back_tasks_mock.Object is IBackgroundTaskQueue back_tasks) { var oper = await back_tasks.DequeueAsync(token); //workItems.TryDequeue(out var dummy); } } break; case BeepBackgroundOperation beep: await beep.DoWorkAsync(null, token); break; case DummyBackgroundOperation dummy: await dummy.DoWorkAsync(null, token); break; case YouTubeUploadOperation youtube: await youtube.DoWorkAsync(null, token); break; default: throw new NotSupportedException(); } } }); serv_mock.Setup(r => r.StopAsync(Moq.It.IsAny <CancellationToken>())) .Returns <CancellationToken>((token) => Task.CompletedTask); // Arrange var operation = new CalculateHashesInfoBackgroundOperation(); back_tasks_mock.Setup(r => r.QueueBackgroundWorkItem(Moq.It.IsAny <IBaseBackgroundOperation>())) .Callback <IBaseBackgroundOperation>((oper) => { workItems.Enqueue(oper); serv_mock.Object.StartAsync(default);