[ https://issues.apache.org/jira/browse/GEODE-8864?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17272972#comment-17272972 ]
ASF GitHub Bot commented on GEODE-8864: --------------------------------------- sabbey37 commented on a change in pull request #5954: URL: https://github.com/apache/geode/pull/5954#discussion_r565440062 ########## File path: geode-redis/src/integrationTest/java/org/apache/geode/redis/internal/executor/hash/AbstractHScanIntegrationTest.java ########## @@ -60,34 +65,56 @@ public void tearDown() { jedis.close(); } + /********* Parameter Checks **************/ + @Test - public void givenNoKeyArgument_returnsWrongNumberOfArgumentsError() { + public void givenLessThanTwoArguments_returnsWrongNumberOfArgumentsError() { assertThatThrownBy(() -> jedis.sendCommand(Protocol.Command.HSCAN)) .hasMessageContaining("ERR wrong number of arguments for 'hscan' command"); - } - @Test - public void givenNoCursorArgument_returnsWrongNumberOfArgumentsError() { assertThatThrownBy(() -> jedis.sendCommand(Protocol.Command.HSCAN, "key!")) .hasMessageContaining("ERR wrong number of arguments for 'hscan' command"); } @Test - public void givenArgumentsAreNotOddAndKeyExists_returnsSyntaxError() { + public void givenMatchArgumentWithoutPatternOnExistingKey_returnsSyntaxError() { + jedis.hset("key", "b", "1"); + + assertThatThrownBy(() -> jedis.sendCommand(Protocol.Command.HSCAN, "key", "0", "Match")) + .hasMessageContaining(ERROR_SYNTAX); + } + + @Test + + public void givenMatchArgumentWithoutPatternOnNonExistentKey_returnsEmptyArray() { + jedis.hset("key", "b", "1"); + + ScanParams scanParams = new ScanParams(); + scanParams.match(""); + + ScanResult<Map.Entry<String, String>> result = + jedis.hscan("key", "0", scanParams); + + assertThat(result.getResult()).isEmpty(); + } Review comment: The name of this test seems inaccurate. It says it is a `NonExistentKey` however, we do an hset beforehand with the key, so it should exist with data in the cache. Also, we say we don't provide a pattern, but empty string, while maybe not being a pattern, is still considered an argument for MATCH, which results in an empty array being returned (HSCAN will return an empty array even if regex syntax is not valid). What we could do (if we want to test a match argument without a pattern on a nonexistent key), is not do the hset, then do: ``` List<Object> result = (List<Object>) jedis.sendCommand(Protocol.Command.HSCAN, "key1", "0", "Match"); assertThat((List<String>) result.get(1)).isEmpty(); ``` ---------------------------------------------------------------- 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. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > finish implementation of Redis HScan Command > -------------------------------------------- > > Key: GEODE-8864 > URL: https://issues.apache.org/jira/browse/GEODE-8864 > Project: Geode > Issue Type: New Feature > Components: redis > Reporter: John Hutchison > Priority: Major > Labels: pull-request-available > -- This message was sent by Atlassian Jira (v8.3.4#803005)