public async Task PartitionKeyRangeGoneRetryPolicyWithNextRetryPolicy()
        {
            Mock <IDocumentClientRetryPolicy> nextRetryPolicyMock = new Mock <IDocumentClientRetryPolicy>();

            nextRetryPolicyMock
            .Setup(m => m.ShouldRetryAsync(It.IsAny <ResponseMessage>(), It.IsAny <CancellationToken>()))
            .Returns(() => Task.FromResult <ShouldRetryResult>(ShouldRetryResult.RetryAfter(TimeSpan.FromDays(1))))
            .Verifiable();

            nextRetryPolicyMock
            .Setup(m => m.ShouldRetryAsync(It.IsAny <Exception>(), It.IsAny <CancellationToken>()))
            .Returns(() => Task.FromResult <ShouldRetryResult>(ShouldRetryResult.RetryAfter(TimeSpan.FromDays(1))))
            .Verifiable();

            PartitionKeyRangeGoneRetryPolicy retryPolicy = new PartitionKeyRangeGoneRetryPolicy(null, null, null, nextRetryPolicyMock.Object);

            ShouldRetryResult exceptionResult = await retryPolicy.ShouldRetryAsync(new Exception("", null), CancellationToken.None);

            Assert.IsNotNull(exceptionResult);
            Assert.IsTrue(exceptionResult.ShouldRetry);
            Assert.AreEqual(TimeSpan.FromDays(1), exceptionResult.BackoffTime);

            ShouldRetryResult messageResult = await retryPolicy.ShouldRetryAsync(new ResponseMessage(), CancellationToken.None);

            Assert.IsNotNull(exceptionResult);
            Assert.IsTrue(exceptionResult.ShouldRetry);
            Assert.AreEqual(TimeSpan.FromDays(1), exceptionResult.BackoffTime);
        }
        public async Task PartitionKeyRangeGoneRetryPolicyWithoutNextRetryPolicy()
        {
            PartitionKeyRangeGoneRetryPolicy retryPolicy = new PartitionKeyRangeGoneRetryPolicy(null, null, null, null);

            ShouldRetryResult exceptionResult = await retryPolicy.ShouldRetryAsync(new Exception("", null), CancellationToken.None);

            Assert.IsNotNull(exceptionResult);
            Assert.IsFalse(exceptionResult.ShouldRetry);
            _ = await retryPolicy.ShouldRetryAsync(new ResponseMessage(), CancellationToken.None);

            Assert.IsNotNull(exceptionResult);
            Assert.IsFalse(exceptionResult.ShouldRetry);
        }