DonalEvans commented on a change in pull request #7278: URL: https://github.com/apache/geode/pull/7278#discussion_r794898131
########## File path: geode-for-redis/src/integrationTest/java/org/apache/geode/redis/internal/commands/executor/set/AbstractSScanIntegrationTest.java ########## @@ -54,295 +74,397 @@ public void tearDown() { } @Test - public void givenNoKeyArgument_returnsWrongNumberOfArgumentsError() { - assertThatThrownBy(() -> jedis.sendCommand("key", Protocol.Command.SSCAN)) - .hasMessageContaining("ERR wrong number of arguments for 'sscan' command"); + public void givenLessThanTwoArguments_returnsWrongNumberOfArgumentsError() { + assertAtLeastNArgs(jedis, Protocol.Command.SSCAN, 2); + } + + @Test + public void givenNonexistentKey_returnsEmptyArray() { + ScanResult<String> result = jedis.sscan("nonexistent", ZERO_CURSOR); + + assertThat(result.isCompleteIteration()).isTrue(); + assertThat(result.getResult()).isEmpty(); + } + + @Test + public void givenNonexistentKeyAndIncorrectOptionalArguments_returnsEmptyArray() { + result = sendCustomSscanCommand("nonexistentKey", "nonexistentKey", ZERO_CURSOR, "ANY"); + assertThat(result.getResult()).isEmpty(); } @Test - public void givenNoCursorArgument_returnsWrongNumberOfArgumentsError() { - assertThatThrownBy(() -> jedis.sendCommand("key", Protocol.Command.SSCAN, "key")) + public void givenIncorrectOptionalArgumentAndKeyExists_returnsSyntaxError() { + assertThatThrownBy(() -> jedis.sendCommand(KEY, Protocol.Command.SSCAN, KEY)) .hasMessageContaining("ERR wrong number of arguments for 'sscan' command"); } @Test - public void givenArgumentsAreNotOddAndKeyExists_returnsSyntaxError() { - jedis.sadd("a", "1"); - assertThatThrownBy(() -> jedis.sendCommand("a", Protocol.Command.SSCAN, "a", "0", "a*")) + public void givenIncorrectOptionalArgumentsAndKeyExists_returnsSyntaxError() { + jedis.sadd(KEY, "1"); + assertThatThrownBy(() -> jedis.sendCommand(KEY, Protocol.Command.SSCAN, KEY, ZERO_CURSOR, "a*")) .hasMessageContaining(ERROR_SYNTAX); } @Test - @SuppressWarnings("unchecked") - public void givenArgumentsAreNotOddAndKeyDoesNotExist_returnsEmptyArray() { - List<Object> result = - (List<Object>) jedis.sendCommand("key!", Protocol.Command.SSCAN, "key!", "0", "a*"); + public void givenMatchArgumentWithoutPatternOnExistingKey_returnsSyntaxError() { + jedis.sadd(KEY, "1"); + assertThatThrownBy( + () -> jedis.sendCommand(KEY, Protocol.Command.SSCAN, KEY, ZERO_CURSOR, "MATCH")) + .hasMessageContaining(ERROR_SYNTAX); + } - assertThat((byte[]) result.get(0)).isEqualTo("0".getBytes()); - assertThat((List<Object>) result.get(1)).isEmpty(); + @Test + public void givenCountArgumentWithoutNumberOnExistingKey_returnsSyntaxError() { + jedis.sadd(KEY, "1"); + assertThatThrownBy( + () -> jedis.sendCommand(KEY, Protocol.Command.SSCAN, KEY, ZERO_CURSOR, "COUNT")) + .hasMessageContaining(ERROR_SYNTAX); } @Test public void givenMatchOrCountKeywordNotSpecified_returnsSyntaxError() { - jedis.sadd("a", "1"); - assertThatThrownBy(() -> jedis.sendCommand("a", Protocol.Command.SSCAN, "a", "0", "a*", "1")) - .hasMessageContaining(ERROR_SYNTAX); + jedis.sadd(KEY, "1"); + assertThatThrownBy( + () -> jedis.sendCommand(KEY, Protocol.Command.SSCAN, KEY, ZERO_CURSOR, "a*", "1")) + .hasMessageContaining(ERROR_SYNTAX); } @Test public void givenCount_whenCountParameterIsNotAnInteger_returnsNotIntegerError() { - jedis.sadd("a", "1"); + jedis.sadd(KEY, "1"); assertThatThrownBy( - () -> jedis.sendCommand("a", Protocol.Command.SSCAN, "a", "0", "COUNT", "MATCH")) + () -> jedis.sendCommand(KEY, Protocol.Command.SSCAN, KEY, ZERO_CURSOR, "COUNT", "MATCH")) .hasMessageContaining(ERROR_NOT_INTEGER); } @Test public void givenMultipleCounts_whenAnyCountParameterIsNotAnInteger_returnsNotIntegerError() { - jedis.sadd("a", "1"); - assertThatThrownBy(() -> jedis.sendCommand("a", Protocol.Command.SSCAN, "a", "0", "COUNT", "2", - "COUNT", "sjlfs", "COUNT", "1")) - .hasMessageContaining(ERROR_NOT_INTEGER); + jedis.sadd(KEY, "1"); + assertThatThrownBy( + () -> jedis.sendCommand(KEY, Protocol.Command.SSCAN, KEY, ZERO_CURSOR, "COUNT", "12", + "COUNT", "sjlfs", "COUNT", "1")) + .hasMessageContaining(ERROR_NOT_INTEGER); } @Test public void givenMultipleCounts_whenAnyCountParameterIsLessThanOne_returnsSyntaxError() { - jedis.sadd("a", "1"); - assertThatThrownBy(() -> jedis.sendCommand("a", Protocol.Command.SSCAN, "a", "0", "COUNT", "2", - "COUNT", "0", "COUNT", "1")) - .hasMessageContaining(ERROR_SYNTAX); + jedis.sadd(KEY, "1"); + assertThatThrownBy( + () -> jedis.sendCommand(KEY, Protocol.Command.SSCAN, KEY, ZERO_CURSOR, "COUNT", "12", + "COUNT", "0", "COUNT", "1")) + .hasMessageContaining(ERROR_SYNTAX); } @Test public void givenCount_whenCountParameterIsZero_returnsSyntaxError() { - jedis.sadd("a", "1"); - - assertThatThrownBy(() -> jedis.sendCommand("a", Protocol.Command.SSCAN, "a", "0", "COUNT", "0")) - .hasMessageContaining(ERROR_SYNTAX); + jedis.sadd(KEY, "1"); + assertThatThrownBy( + () -> jedis.sendCommand(KEY, Protocol.Command.SSCAN, KEY, ZERO_CURSOR, "COUNT", "0")) + .hasMessageContaining(ERROR_SYNTAX); } @Test public void givenCount_whenCountParameterIsNegative_returnsSyntaxError() { - jedis.sadd("a", "1"); - + jedis.sadd(KEY, "1"); assertThatThrownBy( - () -> jedis.sendCommand("a", Protocol.Command.SSCAN, "a", "0", "COUNT", "-37")) + () -> jedis.sendCommand(KEY, Protocol.Command.SSCAN, KEY, ZERO_CURSOR, "COUNT", "-37")) .hasMessageContaining(ERROR_SYNTAX); } @Test public void givenKeyIsNotASet_returnsWrongTypeError() { Review comment: We've had problems in the past with getting the precedence of errors wrong on certain commands, so testing the returned error message with both a wrong type and a wrong count does give us value on top of just testing the wrong type case. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: notifications-unsubscr...@geode.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org