Skip to content

Commit ce91ecd

Browse files
committed
Use named delegates, as anonymous delegates aren't present in .NET 1.1
1 parent 483f93c commit ce91ecd

File tree

1 file changed

+36
-18
lines changed

1 file changed

+36
-18
lines changed

src/unit/TestSharedQueue.cs

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -73,19 +73,37 @@ public class DelayedEnqueuer
7373
public SharedQueue m_q;
7474
public int m_delayMs;
7575
public object m_v;
76-
public void Run()
76+
public DelayedEnqueuer(SharedQueue q, int delayMs, object v) {
77+
m_q = q;
78+
m_delayMs = delayMs;
79+
m_v = v;
80+
}
81+
public void EnqueueValue()
7782
{
7883
Thread.Sleep(m_delayMs);
7984
m_q.Enqueue(m_v);
8085
}
86+
public void Dequeue()
87+
{
88+
m_q.Dequeue();
89+
}
90+
public void DequeueNoWaitZero()
91+
{
92+
m_q.DequeueNoWait(0);
93+
}
94+
public void DequeueAfterOneIntoV()
95+
{
96+
m_q.Dequeue(1, out m_v);
97+
}
98+
public void BackgroundEofExpectingDequeue()
99+
{
100+
ExpectEof(new Thunk(this.Dequeue));
101+
}
81102
}
82103

83104
public static void EnqueueAfter(int delayMs, SharedQueue q, object v) {
84-
DelayedEnqueuer de = new DelayedEnqueuer();
85-
de.m_q = q;
86-
de.m_delayMs = delayMs;
87-
de.m_v = v;
88-
new Thread(new ThreadStart(de.Run)).Start();
105+
DelayedEnqueuer de = new DelayedEnqueuer(q, delayMs, v);
106+
new Thread(new ThreadStart(de.EnqueueValue)).Start();
89107
}
90108

91109
public static void ExpectEof(Thunk thunk) {
@@ -261,13 +279,12 @@ public void TestDoublePoll() {
261279

262280
[Test]
263281
public void TestCloseWhenEmpty() {
264-
SharedQueue q = new SharedQueue();
265-
object v;
266-
q.Close();
267-
ExpectEof(delegate () { q.Enqueue(1); });
268-
ExpectEof(delegate () { q.Dequeue(); });
269-
ExpectEof(delegate () { q.DequeueNoWait(0); });
270-
ExpectEof(delegate () { q.Dequeue(1, out v); });
282+
DelayedEnqueuer de = new DelayedEnqueuer(new SharedQueue(), 0, 1);
283+
de.m_q.Close();
284+
ExpectEof(new Thunk(de.EnqueueValue));
285+
ExpectEof(new Thunk(de.Dequeue));
286+
ExpectEof(new Thunk(de.DequeueNoWaitZero));
287+
ExpectEof(new Thunk(de.DequeueAfterOneIntoV));
271288
}
272289

273290
[Test]
@@ -278,21 +295,22 @@ public void TestCloseWhenFull() {
278295
q.Enqueue(2);
279296
q.Enqueue(3);
280297
q.Close();
281-
ExpectEof(delegate () { q.Enqueue(4); });
298+
DelayedEnqueuer de = new DelayedEnqueuer(q, 0, 4);
299+
ExpectEof(new Thunk(de.EnqueueValue));
282300
Assert.AreEqual(1, q.Dequeue());
283301
Assert.AreEqual(2, q.DequeueNoWait(0));
284302
bool r = q.Dequeue(1, out v);
285303
Assert.IsTrue(r);
286304
Assert.AreEqual(3, v);
287-
ExpectEof(delegate () { q.Dequeue(); });
305+
ExpectEof(new Thunk(de.Dequeue));
288306
}
289307

290308
[Test]
291309
public void TestCloseWhenWaiting() {
292310
SharedQueue q = new SharedQueue();
293-
Thread t = new Thread(delegate() {
294-
ExpectEof(delegate () { q.Dequeue(); });
295-
});
311+
DelayedEnqueuer de = new DelayedEnqueuer(q, 0, null);
312+
Thread t =
313+
new Thread(new ThreadStart(de.BackgroundEofExpectingDequeue));
296314
t.Start();
297315
Thread.Sleep(10);
298316
q.Close();

0 commit comments

Comments
 (0)