diff --git a/pom.xml b/pom.xml index a67dc48660..98020e9502 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-redis - 3.2.0-SNAPSHOT + 3.2.0-GH-2646-SNAPSHOT Spring Data Redis Spring Data module for Redis diff --git a/src/main/java/org/springframework/data/redis/core/RedisCommand.java b/src/main/java/org/springframework/data/redis/core/RedisCommand.java index 0bd33bc646..0d25096309 100644 --- a/src/main/java/org/springframework/data/redis/core/RedisCommand.java +++ b/src/main/java/org/springframework/data/redis/core/RedisCommand.java @@ -219,8 +219,8 @@ public enum RedisCommand { private boolean write = true; private Set alias = new HashSet<>(1); - private int minArgs = -1; - private int maxArgs = -1; + final int minArgs; + final int maxArgs; private final static Map commandLookup; @@ -281,7 +281,7 @@ private static Map buildCommandLookupTable() { * @return {@literal true} if the command requires arguments */ public boolean requiresArguments() { - return minArgs >= 0; + return minArgs > 0; } /** diff --git a/src/test/java/org/springframework/data/redis/core/RedisCommandUnitTests.java b/src/test/java/org/springframework/data/redis/core/RedisCommandUnitTests.java index 2a8cadbe89..649b4e83d9 100644 --- a/src/test/java/org/springframework/data/redis/core/RedisCommandUnitTests.java +++ b/src/test/java/org/springframework/data/redis/core/RedisCommandUnitTests.java @@ -15,7 +15,10 @@ */ package org.springframework.data.redis.core; -import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; + +import java.util.Arrays; import org.junit.jupiter.api.Test; @@ -26,6 +29,7 @@ * @author Thomas Darimont * @author Mark Paluch * @author Oscar Cai + * @author John Blum */ class RedisCommandUnitTests { @@ -101,4 +105,22 @@ void shouldThrowExceptionOnInvalidArgumentCountForZaddWhenExpectedMinimalMatch() assertThatIllegalArgumentException().isThrownBy(() -> RedisCommand.ZADD.validateArgumentCount(2)) .withMessageContaining("ZADD command requires at least 3 arguments"); } + + @Test // GH-2646 + void commandRequiresArgumentsIsCorrect() { + + Arrays.stream(RedisCommand.values()).forEach(command -> + assertThat(command.requiresArguments()) + .describedAs("Redis command [%s] failed required arguments check", command) + .isEqualTo(command.minArgs > 0)); + } + + @Test // GH-2646 + void commandRequiresExactNumberOfArgumentsIsCorrect() { + + Arrays.stream(RedisCommand.values()).forEach(command -> + assertThat(command.requiresExactNumberOfArguments()) + .describedAs("Redis command [%s] failed requires exact arguments check") + .isEqualTo(command.minArgs == command.maxArgs)); + } }