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));
+ }
}