2323import static org .springframework .data .redis .connection .ClusterTestVariables .*;
2424import static org .springframework .data .redis .connection .RedisGeoCommands .DistanceUnit .*;
2525import static org .springframework .data .redis .connection .RedisGeoCommands .GeoRadiusCommandArgs .*;
26+ import static org .springframework .data .redis .connection .RedisZSetCommands .*;
2627import static org .springframework .data .redis .core .ScanOptions .*;
2728
2829import io .lettuce .core .cluster .RedisClusterClient ;
5354import org .springframework .data .redis .connection .RedisListCommands .Position ;
5455import org .springframework .data .redis .connection .RedisStringCommands .BitOperation ;
5556import org .springframework .data .redis .connection .RedisStringCommands .SetOption ;
56- import org .springframework .data .redis .connection .RedisZSetCommands .Range ;
57- import org .springframework .data .redis .connection .RedisZSetCommands .Tuple ;
5857import org .springframework .data .redis .connection .ValueEncoding .RedisValueEncoding ;
59- import org .springframework .data .redis .connection .jedis .JedisConverters ;
6058import org .springframework .data .redis .core .Cursor ;
6159import org .springframework .data .redis .core .ScanOptions ;
6260import org .springframework .data .redis .core .types .Expiration ;
@@ -996,7 +994,7 @@ public void keysShouldReturnAllKeysForSpecificNode() {
996994 nativeConnection .set (KEY_2 , VALUE_2 );
997995
998996 Set <byte []> keysOnNode = clusterConnection .keys (new RedisClusterNode ("127.0.0.1" , 7379 , SlotRange .empty ()),
999- JedisConverters .toBytes ("*" ));
997+ LettuceConverters .toBytes ("*" ));
1000998
1001999 assertThat (keysOnNode ).contains (KEY_2_BYTES );
10021000 assertThat (keysOnNode ).doesNotContain (KEY_1_BYTES );
@@ -2082,6 +2080,40 @@ public void zRangeByLexShouldReturnResultCorrectly() {
20822080 LettuceConverters .toBytes ("c" ), LettuceConverters .toBytes ("d" ));
20832081 }
20842082
2083+ @ Test // GH-1998
2084+ public void zRevRangeByLexShouldReturnValuesCorrectly () {
2085+
2086+ nativeConnection .zadd (KEY_1 , 0 , "a" );
2087+ nativeConnection .zadd (KEY_1 , 0 , "b" );
2088+ nativeConnection .zadd (KEY_1 , 0 , "c" );
2089+ nativeConnection .zadd (KEY_1 , 0 , "d" );
2090+ nativeConnection .zadd (KEY_1 , 0 , "e" );
2091+ nativeConnection .zadd (KEY_1 , 0 , "f" );
2092+ nativeConnection .zadd (KEY_1 , 0 , "g" );
2093+
2094+ Set <byte []> values = clusterConnection .zRevRangeByLex (KEY_1_BYTES , Range .range ().lte ("c" ));
2095+
2096+ assertThat (values ).containsExactly (LettuceConverters .toBytes ("c" ), LettuceConverters .toBytes ("b" ),
2097+ LettuceConverters .toBytes ("a" ));
2098+ assertThat (values ).doesNotContain (LettuceConverters .toBytes ("d" ), LettuceConverters .toBytes ("e" ),
2099+ LettuceConverters .toBytes ("f" ), LettuceConverters .toBytes ("g" ));
2100+
2101+ values = clusterConnection .zRevRangeByLex (KEY_1_BYTES , Range .range ().lt ("c" ));
2102+ assertThat (values ).containsExactly (LettuceConverters .toBytes ("b" ), LettuceConverters .toBytes ("a" ));
2103+ assertThat (values ).doesNotContain (LettuceConverters .toBytes ("c" ));
2104+
2105+ values = clusterConnection .zRevRangeByLex (KEY_1_BYTES , Range .range ().gte ("aaa" ).lt ("g" ));
2106+ assertThat (values ).containsExactly (LettuceConverters .toBytes ("f" ), LettuceConverters .toBytes ("e" ),
2107+ LettuceConverters .toBytes ("d" ), LettuceConverters .toBytes ("c" ), LettuceConverters .toBytes ("b" ));
2108+ assertThat (values ).doesNotContain (LettuceConverters .toBytes ("a" ), LettuceConverters .toBytes ("g" ));
2109+
2110+ values = clusterConnection .zRevRangeByLex (KEY_1_BYTES , Range .range ().lte ("d" ), Limit .limit ().count (2 ).offset (1 ));
2111+
2112+ assertThat (values ).hasSize (2 ).containsExactly (LettuceConverters .toBytes ("c" ), LettuceConverters .toBytes ("b" ));
2113+ assertThat (values ).doesNotContain (LettuceConverters .toBytes ("a" ), LettuceConverters .toBytes ("d" ),
2114+ LettuceConverters .toBytes ("e" ), LettuceConverters .toBytes ("f" ), LettuceConverters .toBytes ("g" ));
2115+ }
2116+
20852117 @ Test // DATAREDIS-315
20862118 public void zRangeByScoreShouldReturnValuesCorrectly () {
20872119
@@ -2398,46 +2430,46 @@ void refcountReturnsNullWhenKeyDoesNotExist() {
23982430 @ Test // DATAREDIS-562
23992431 void bitFieldSetShouldWorkCorrectly () {
24002432
2401- assertThat (clusterConnection .stringCommands ().bitField (JedisConverters .toBytes (KEY_1 ),
2433+ assertThat (clusterConnection .stringCommands ().bitField (LettuceConverters .toBytes (KEY_1 ),
24022434 create ().set (INT_8 ).valueAt (BitFieldSubCommands .Offset .offset (0L )).to (10L ))).containsExactly (0L );
2403- assertThat (clusterConnection .stringCommands ().bitField (JedisConverters .toBytes (KEY_1 ),
2435+ assertThat (clusterConnection .stringCommands ().bitField (LettuceConverters .toBytes (KEY_1 ),
24042436 create ().set (INT_8 ).valueAt (BitFieldSubCommands .Offset .offset (0L )).to (20L ))).containsExactly (10L );
24052437 }
24062438
24072439 @ Test // DATAREDIS-562
24082440 void bitFieldGetShouldWorkCorrectly () {
24092441
2410- assertThat (clusterConnection .stringCommands ().bitField (JedisConverters .toBytes (KEY_1 ),
2442+ assertThat (clusterConnection .stringCommands ().bitField (LettuceConverters .toBytes (KEY_1 ),
24112443 create ().get (INT_8 ).valueAt (BitFieldSubCommands .Offset .offset (0L )))).containsExactly (0L );
24122444 }
24132445
24142446 @ Test // DATAREDIS-562
24152447 void bitFieldIncrByShouldWorkCorrectly () {
24162448
2417- assertThat (clusterConnection .stringCommands ().bitField (JedisConverters .toBytes (KEY_1 ),
2449+ assertThat (clusterConnection .stringCommands ().bitField (LettuceConverters .toBytes (KEY_1 ),
24182450 create ().incr (INT_8 ).valueAt (BitFieldSubCommands .Offset .offset (100L )).by (1L ))).containsExactly (1L );
24192451 }
24202452
24212453 @ Test // DATAREDIS-562
24222454 void bitFieldIncrByWithOverflowShouldWorkCorrectly () {
24232455
2424- assertThat (clusterConnection .stringCommands ().bitField (JedisConverters .toBytes (KEY_1 ),
2456+ assertThat (clusterConnection .stringCommands ().bitField (LettuceConverters .toBytes (KEY_1 ),
24252457 create ().incr (unsigned (2 )).valueAt (BitFieldSubCommands .Offset .offset (102L )).overflow (FAIL ).by (1L )))
24262458 .containsExactly (1L );
2427- assertThat (clusterConnection .stringCommands ().bitField (JedisConverters .toBytes (KEY_1 ),
2459+ assertThat (clusterConnection .stringCommands ().bitField (LettuceConverters .toBytes (KEY_1 ),
24282460 create ().incr (unsigned (2 )).valueAt (BitFieldSubCommands .Offset .offset (102L )).overflow (FAIL ).by (1L )))
24292461 .containsExactly (2L );
2430- assertThat (clusterConnection .stringCommands ().bitField (JedisConverters .toBytes (KEY_1 ),
2462+ assertThat (clusterConnection .stringCommands ().bitField (LettuceConverters .toBytes (KEY_1 ),
24312463 create ().incr (unsigned (2 )).valueAt (BitFieldSubCommands .Offset .offset (102L )).overflow (FAIL ).by (1L )))
24322464 .containsExactly (3L );
2433- assertThat (clusterConnection .stringCommands ().bitField (JedisConverters .toBytes (KEY_1 ),
2465+ assertThat (clusterConnection .stringCommands ().bitField (LettuceConverters .toBytes (KEY_1 ),
24342466 create ().incr (unsigned (2 )).valueAt (BitFieldSubCommands .Offset .offset (102L )).overflow (FAIL ).by (1L ))).isNotNull ();
24352467 }
24362468
24372469 @ Test // DATAREDIS-562
24382470 void bitfieldShouldAllowMultipleSubcommands () {
24392471
2440- assertThat (clusterConnection .stringCommands ().bitField (JedisConverters .toBytes (KEY_1 ),
2472+ assertThat (clusterConnection .stringCommands ().bitField (LettuceConverters .toBytes (KEY_1 ),
24412473 create ().incr (signed (5 )).valueAt (BitFieldSubCommands .Offset .offset (100L )).by (1L ).get (unsigned (4 )).valueAt (0L )))
24422474 .containsExactly (1L , 0L );
24432475 }
@@ -2446,13 +2478,13 @@ void bitfieldShouldAllowMultipleSubcommands() {
24462478 void bitfieldShouldWorkUsingNonZeroBasedOffset () {
24472479
24482480 assertThat (
2449- clusterConnection .stringCommands ().bitField (JedisConverters .toBytes (KEY_1 ),
2481+ clusterConnection .stringCommands ().bitField (LettuceConverters .toBytes (KEY_1 ),
24502482 create ().set (INT_8 ).valueAt (BitFieldSubCommands .Offset .offset (0L ).multipliedByTypeLength ()).to (100L )
24512483 .set (INT_8 ).valueAt (BitFieldSubCommands .Offset .offset (1L ).multipliedByTypeLength ()).to (200L )))
24522484 .containsExactly (0L , 0L );
24532485 assertThat (
24542486 clusterConnection .stringCommands ()
2455- .bitField (JedisConverters .toBytes (KEY_1 ),
2487+ .bitField (LettuceConverters .toBytes (KEY_1 ),
24562488 create ().get (INT_8 ).valueAt (BitFieldSubCommands .Offset .offset (0L ).multipliedByTypeLength ()).get (INT_8 )
24572489 .valueAt (BitFieldSubCommands .Offset .offset (1L ).multipliedByTypeLength ()))).containsExactly (100L ,
24582490 -56L );
0 commit comments