public void wait_lasts_until_we_get_it()
{
var m1 = new Message();
var m2 = new Message();
var m3 = new Message();
var m4 = new Message();
var condition = new MessageWaitCondition<Message>(x => x == m4);
Task.Factory.StartNew(() => {
Thread.Sleep(100);
condition.Receive(m1);
Thread.Sleep(100);
condition.Receive(m2);
Thread.Sleep(100);
condition.Receive(m3);
Thread.Sleep(100);
condition.Receive(m4);
});
condition.Wait().ShouldBeTheSameAs(m4);
}