public void ResignTest1() { AutoResetEvent ar1 = new AutoResetEvent(false); AutoResetEvent ar2 = new AutoResetEvent(false); bool resignHappened1 = false; bool resignHappened2 = false; Connect4Server.Connect4Service server = new Connect4Server.Connect4Service(5011, 30, Connect4Server.Connect4Service.WhoGoesFirst.second); Connect4ClientGame target1 = new Connect4ClientGame("Mr. test"); Connect4ClientGame target2 = new Connect4ClientGame("Mrs. test"); target1.Disconnected += (s) => { if (s == DisconnectReason.youResigned) { resignHappened1 = true; ar1.Set(); } }; target2.Disconnected += (s) => { if (s == DisconnectReason.opponentResigned) { resignHappened2 = true; ar2.Set(); } }; target1.StartConnection("localhost", 5011); target2.StartConnection("localhost", 5011); Thread.Sleep(1000); target1.Resign(); ar1.WaitOne(); ar2.WaitOne(); Assert.IsTrue(resignHappened1); Assert.IsTrue(resignHappened2); }