public void TestSmartPollingBlocking()
{
DateTimeOffset threeSecondDelay = DateTimeOffset.Now.AddSeconds(3);
const int maxDelayMillisec = 500;
var pollmeister = new BlockingObjectPoll<object>(() => PollCurrentTime(threeSecondDelay), maxDelayMillisec);
object result = pollmeister.WaitForPayload();
this.TestContext.WriteLine("Empty poll calls: {0:#,#0}", pollmeister.EmptyPollCallCount);
Assert.IsNotNull(result);
int discrepMillisecBetweenHopedAndActual = ((DateTimeOffset)result - threeSecondDelay).Milliseconds;
Assert.IsTrue(discrepMillisecBetweenHopedAndActual <= maxDelayMillisec);
Assert.IsTrue(pollmeister.EmptyPollCallCount <= 12);
Assert.IsTrue(pollmeister.PollCallCountWithPayload == 1);
}