public void TestCloseWhenEmpty() { var de = new DelayedEnqueuer(new SharedQueue(), 0, 1); de.m_q.Close(); ExpectEof(de.EnqueueValue); ExpectEof(de.Dequeue); ExpectEof(de.DequeueNoWaitZero); ExpectEof(de.DequeueAfterOneIntoV); }
public void TestCloseWhenWaiting() { var q = new SharedQueue(); var de = new DelayedEnqueuer(q, 0, null); var t = new Thread(de.BackgroundEofExpectingDequeue); t.Start(); Thread.Sleep(SafetyMargin); q.Close(); t.Join(); }
public void TestCloseWhenFull() { var q = new SharedQueue(); q.Enqueue(1); q.Enqueue(2); q.Enqueue(3); q.Close(); var de = new DelayedEnqueuer(q, 0, 4); ExpectEof(de.EnqueueValue); Assert.AreEqual(1, q.Dequeue()); Assert.AreEqual(2, q.DequeueNoWait(0)); bool r = q.Dequeue(TimeSpan.FromMilliseconds(1), out object v); Assert.IsTrue(r); Assert.AreEqual(3, v); ExpectEof(de.Dequeue); }
public void TestCloseWhenFull() { SharedQueue q = new SharedQueue(); object v; q.Enqueue(1); q.Enqueue(2); q.Enqueue(3); q.Close(); DelayedEnqueuer de = new DelayedEnqueuer(q, 0, 4); ExpectEof(new Thunk(de.EnqueueValue)); Assert.AreEqual(1, q.Dequeue()); Assert.AreEqual(2, q.DequeueNoWait(0)); bool r = q.Dequeue(1, out v); Assert.IsTrue(r); Assert.AreEqual(3, v); ExpectEof(new Thunk(de.Dequeue)); }
public static void EnqueueAfter(int delayMs, SharedQueue q, object v) { DelayedEnqueuer de = new DelayedEnqueuer(q, delayMs, v); new Thread(new ThreadStart(de.EnqueueValue)).Start(); }
public void TestCloseWhenWaiting() { SharedQueue q = new SharedQueue(); DelayedEnqueuer de = new DelayedEnqueuer(q, 0, null); Thread t = new Thread(new ThreadStart(de.BackgroundEofExpectingDequeue)); t.Start(); Thread.Sleep(SafetyMargin); q.Close(); t.Join(); }
public void TestCloseWhenEmpty() { DelayedEnqueuer de = new DelayedEnqueuer(new SharedQueue(), 0, 1); de.m_q.Close(); ExpectEof(new Thunk(de.EnqueueValue)); ExpectEof(new Thunk(de.Dequeue)); ExpectEof(new Thunk(de.DequeueNoWaitZero)); ExpectEof(new Thunk(de.DequeueAfterOneIntoV)); }
public static void EnqueueAfter(int delayMs, SharedQueue queue, object v) { var enqueuer = new DelayedEnqueuer(queue, delayMs, v); new Thread(enqueuer.EnqueueValue).Start(); }
public static void EnqueueAfter(TimeSpan delay, SharedQueue queue, object v) { var enqueuer = new DelayedEnqueuer(queue, (int)delay.TotalMilliseconds, v); new Thread(enqueuer.EnqueueValue).Start(); }