public async Task DequeueEmptyQueueTest()
        {
            var q = new MockReliableConcurrentQueue <int>(new Uri("test://queue"));

            using (var tx = _stateManager.CreateTransaction())
            {
                Assert.IsFalse((await q.TryDequeueAsync(tx, timeout: TimeSpan.FromMilliseconds(20))).HasValue);
            }
        }
        public async Task DequeueWithZeroTimeoutTest()
        {
            var q = new MockReliableConcurrentQueue <int>(new Uri("test://queue"));

            using (var tx = _stateManager.CreateTransaction())
            {
                await q.EnqueueAsync(tx, 1);

                await tx.CommitAsync();

                var result = await q.TryDequeueAsync(tx, timeout : TimeSpan.FromMilliseconds(0));

                Assert.IsTrue(result.HasValue);
                Assert.AreEqual(1, result.Value);
            }
        }
        public async Task DequeueOtherEnqueueTest()
        {
            var q = new MockReliableConcurrentQueue <int>(new Uri("test://queue"));

            using (var tx = _stateManager.CreateTransaction())
            {
                await q.EnqueueAsync(tx, 1);

                await tx.CommitAsync();
            }

            using (var tx = _stateManager.CreateTransaction())
            {
                Task <ConditionalValue <int> > task = q.TryDequeueAsync(tx);
                Assert.AreEqual(1, (await task).Value);
            }
        }