private static async Task IncrementWithExpiryValidate(
            Context context,
            RedisDatabaseAdapter adapter,
            ITestRedisDatabase database,
            string key,
            uint comparisonValue,
            TimeSpan specifiedExpiry,
            int requestedIncrement,
            long expectedReturnValue,
            long?expectedIncrementedValue,
            TimeSpan?expectedDifferentExpiry = null)
        {
            var batch               = adapter.CreateBatchOperation(RedisOperation.All);
            var redisKey            = GetKey(key);
            var incrementWithExpire = batch.TryStringIncrementBumpExpiryIfBelowOrEqualValueAsync(key, comparisonValue, timeToLive: specifiedExpiry, requestedIncrement: requestedIncrement);
            await adapter.ExecuteBatchOperationAsync(context, batch, CancellationToken.None).IgnoreFailure();

            var incrementedValue = await incrementWithExpire;

            Assert.Equal(expectedReturnValue, incrementedValue.AppliedIncrement);

            var keysWithExpiry = database.GetDbWithExpiry();

            if (expectedIncrementedValue == null)
            {
                Assert.False(keysWithExpiry.ContainsKey(redisKey));
                Assert.Equal(expectedReturnValue, incrementedValue.IncrementedValue);
                return;
            }

            Assert.True(keysWithExpiry.ContainsKey(redisKey));

            var expiry = keysWithExpiry[redisKey];

            if (expectedDifferentExpiry != null)
            {
                Assert.False(expiry.Equals(new MockRedisValueWithExpiry(expectedIncrementedValue, DateTime.UtcNow + specifiedExpiry)));
                Assert.True(expiry.Equals(new MockRedisValueWithExpiry(expectedIncrementedValue, DateTime.UtcNow + expectedDifferentExpiry.Value)));
            }
            else
            {
                Assert.True(expiry.Equals(new MockRedisValueWithExpiry(expectedIncrementedValue, DateTime.UtcNow + specifiedExpiry)));
            }
        }
 private static Task <BoolResult> ExecuteBatchAsync(RedisDatabaseAdapter dbAdapter) => dbAdapter.ExecuteBatchOperationAsync(new Context(TestGlobal.Logger), dbAdapter.CreateBatchOperation(RedisOperation.All), default);