steve-sienk commented on a change in pull request #7278: URL: https://github.com/apache/geode/pull/7278#discussion_r794862362
########## 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: Testing the error condition with the combination of "key is not a set" and "count is -37" seems unnecessary. Testing `givenKeyIsNotASet_returnsWrongTypeError` would be sufficient, no? -- 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