public void EnqueueTrySignalMethodShouldBeCalledWhenWaitingStackIsNotEmpty() { IWorkItemWaiterEntry workItemWaiterEntry = Substitute.For <IWorkItemWaiterEntry>(); IWorkItemWaiterEntryStack workItemWaiterEntryStack = Substitute.For <IWorkItemWaiterEntryStack>(); int count = 1; workItemWaiterEntryStack.Count.Returns(x => count); workItemWaiterEntryStack.Pop().Returns( x => { if (count == 1) { count = 0; return(workItemWaiterEntry); } return(null); }); WorkItemQueue workItemQueue = new WorkItemQueue(1 * 1000, workItemWaiterEntryStack); IWorkItem workItem = Substitute.For <IWorkItem>(); workItemQueue.Enqueue(workItem); workItemWaiterEntry.Received(1).TrySignal(workItem); }
/// <summary> /// Ýþ parçasý kuyruðu inþacý metodu. /// </summary> /// <param name="workItemWaiterTimeOutInMilliSeconds">Ýs parçasý bekleyen Thread için zaman aþýmý süresi.</param> /// <param name="workItemWaiterEntryStack">Ýþ parçasý bekleyici kaydý yýðýný.</param> internal WorkItemQueue(int workItemWaiterTimeOutInMilliSeconds, IWorkItemWaiterEntryStack workItemWaiterEntryStack) { if (workItemWaiterEntryStack == null) { throw new ArgumentNullException("workItemWaiterEntryStack"); } m_WorkItemWaiterTimeOutInMilliSeconds = workItemWaiterTimeOutInMilliSeconds; m_WorkItemsQueue = new Queue <IWorkItem>(); m_WorkItemWaiterEntryStack = workItemWaiterEntryStack; }
public void EnqueueTrySignalMethodShouldNotBeCalledWhenWaitingStackIsEmpty() { IWorkItemWaiterEntry workItemWaiterEntry = Substitute.For <IWorkItemWaiterEntry>(); IWorkItemWaiterEntryStack workItemWaiterEntryStack = Substitute.For <IWorkItemWaiterEntryStack>(); workItemWaiterEntryStack.Count.Returns(0); WorkItemQueue workItemQueue = new WorkItemQueue(1 * 1000, workItemWaiterEntryStack); IWorkItem workItem = Substitute.For <IWorkItem>(); workItemQueue.Enqueue(workItem); workItemWaiterEntry.DidNotReceiveWithAnyArgs().TrySignal(workItem); }
public void EnqueueShouldNotAddWorkItemToQueueWhenWaiterIsSignaled() { IWorkItem workItem = Substitute.For <IWorkItem>(); IWorkItemWaiterEntry workItemWaiterEntry = Substitute.For <IWorkItemWaiterEntry>(); workItemWaiterEntry.TrySignal(workItem).Returns(true); IWorkItemWaiterEntryStack workItemWaiterEntryStack = Substitute.For <IWorkItemWaiterEntryStack>(); workItemWaiterEntryStack.Count.Returns(1); workItemWaiterEntryStack.Pop().Returns(workItemWaiterEntry); WorkItemQueue workItemQueue = new WorkItemQueue(1 * 1000, workItemWaiterEntryStack); workItemQueue.Enqueue(workItem); Assert.AreEqual(0, workItemQueue.Count); }
public void EnqueueShouldAddWorkItemToQueueWhenAllWaitersTimedOut() { Stack <IWorkItemWaiterEntry> workItemWaiterEntries = new Stack <IWorkItemWaiterEntry>(); workItemWaiterEntries.Push(CreateNotSignalableWorkItemWaiterEntry()); workItemWaiterEntries.Push(CreateNotSignalableWorkItemWaiterEntry()); IWorkItemWaiterEntryStack workItemWaiterEntryStack = Substitute.For <IWorkItemWaiterEntryStack>(); workItemWaiterEntryStack.Count.Returns(x => workItemWaiterEntries.Count); workItemWaiterEntryStack.Pop().Returns(x => workItemWaiterEntries.Pop()); WorkItemQueue workItemQueue = new WorkItemQueue(1 * 1000, workItemWaiterEntryStack); IWorkItem workItem = Substitute.For <IWorkItem>(); workItemQueue.Enqueue(workItem); Assert.AreEqual(1, workItemQueue.Count); }
/// <summary> /// Ýþ parçasý kuyruðu inþacý metodu. /// </summary> /// <param name="workItemWaiterTimeOutInMilliSeconds">Ýs parçasý bekleyen Thread için zaman aþýmý süresi.</param> /// <param name="workItemWaiterEntryStack">Ýþ parçasý bekleyici kaydý yýðýný.</param> internal WorkItemQueue(int workItemWaiterTimeOutInMilliSeconds, IWorkItemWaiterEntryStack workItemWaiterEntryStack) { if (workItemWaiterEntryStack == null) { throw new ArgumentNullException("workItemWaiterEntryStack"); } m_WorkItemWaiterTimeOutInMilliSeconds = workItemWaiterTimeOutInMilliSeconds; m_WorkItemsQueue = new Queue<IWorkItem>(); m_WorkItemWaiterEntryStack = workItemWaiterEntryStack; }