public void ShouldNotBeAbleToPopFromAnEmptyBuffer(int size) { var evt = new ManualResetEvent(false); Thread t = new Thread(() => { var buffer = new ConcurrentRingBufferImpl <Data>(size); buffer.Initialize(() => new Data(), false); var data = buffer.Pop(); Assert.NotNull(data); }); t.Start(); if (evt.WaitOne(100)) { Assert.False(true, "Thread managed to pop from an empty buffer"); } }