public void can_wait_for_a_condition()
{
var hub = new MessagingHub();
var listener = new RemoteListener(hub);
var m1 = new Message(){Number = 1};
var m2 = new Message() { Number = 2 };
var m3 = new Message() { Number = 3 };
var m4 = new Message() { Number = 4 };
var result = listener.WaitForMessage<Message>(m => m.Number == 4, () => {
Task.Factory.StartNew(() =>
{
Thread.Sleep(100);
listener.SendObject(m1);
Thread.Sleep(100);
listener.SendObject(m2);
Thread.Sleep(100);
listener.SendObject(m3);
Thread.Sleep(100);
listener.SendObject(m4);
});
});
result.ShouldEqual(m4);
hub.Listeners.Any().ShouldBeFalse(); // want it to remove the condition as it goes
}