private static void Test() { Pipe.counter = 0; var list = new List <string>(); var p = new BlockingPipe(list); var f = Task.Factory; var b = new Barrier(3); f.StartNew(() => { p.Client("asdf"); b.SignalAndWait(); }); f.StartNew(() => { p.Server("qwer"); b.SignalAndWait(); }); b.SignalAndWait(); var exp = String.Join("\n", new[] { "server0 processes qwer", "client0 processes asdf" }); var act = String.Join("\n", list); Assert.AreEqual(exp, act); }