public void Enqueue_And_Copy() { // arrange var queue = new SuspendedWorkQueue(); var task1 = new MockExecutionTask(); var task2 = new MockExecutionTask(); // act queue.Enqueue(task1); queue.Enqueue(task2); // assert var work = new WorkQueue(); var plan = new QueryPlan(new MockQueryPlanStep()); var state = new Mock <IQueryPlanState>(); var stateMachine = new QueryPlanStateMachine(); stateMachine.Initialize(state.Object, plan); queue.CopyTo(work, work, stateMachine); Assert.True(work.TryTake(out IExecutionTask task)); Assert.Same(task1, task); Assert.True(work.TryTake(out task)); Assert.Same(task2, task); }
public void Take_All() { // arrange var queue = new WorkQueue(); var task1 = new MockExecutionTask(); var task2 = new MockExecutionTask(); queue.Push(task1); queue.Push(task2); // act queue.TryTake(out var task); var success = queue.TryTake(out task); // assert Assert.Same(task1, task); Assert.True(success); Assert.True(queue.HasRunningTasks); Assert.True(queue.IsEmpty); }