Add popFirst and popLast methods to RedisZSet.

See #2007
Original Pull Request: #2088
This commit is contained in:
Mark Paluch
2021-06-16 13:59:36 +02:00
committed by Christoph Strobl
parent 0f2039d5a0
commit 739b917922
3 changed files with 177 additions and 0 deletions

View File

@@ -23,6 +23,7 @@ import java.util.Arrays;
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.assertj.core.data.Offset;
import org.junit.jupiter.api.BeforeEach;
@@ -37,6 +38,7 @@ import org.springframework.data.redis.core.BoundZSetOperations;
import org.springframework.data.redis.core.Cursor;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ZSetOperations.TypedTuple;
import org.springframework.data.redis.test.condition.EnabledOnCommand;
import org.springframework.data.redis.test.extension.parametrized.ParameterizedRedisTest;
/**
@@ -119,6 +121,38 @@ public abstract class AbstractRedisZSetTestIntegration<T> extends AbstractRedisC
assertThat(zSet.first()).isEqualTo(t1);
}
@ParameterizedRedisTest
@EnabledOnCommand("ZPOPMIN")
void testPopFirst() {
T t1 = getT();
T t2 = getT();
T t3 = getT();
zSet.add(t1, 3);
zSet.add(t2, 4);
zSet.add(t3, 5);
assertThat(zSet.popFirst()).isEqualTo(t1);
assertThat(zSet).hasSize(2);
}
@ParameterizedRedisTest
@EnabledOnCommand("ZPOPMIN")
void testPopFirstWithTimeout() {
T t1 = getT();
T t2 = getT();
T t3 = getT();
zSet.add(t1, 3);
zSet.add(t2, 4);
zSet.add(t3, 5);
assertThat(zSet.popFirst(1, TimeUnit.SECONDS)).isEqualTo(t1);
assertThat(zSet).hasSize(2);
}
@ParameterizedRedisTest
void testFirstException() {
assertThatExceptionOfType(NoSuchElementException.class).isThrownBy(() -> zSet.first());
@@ -126,6 +160,7 @@ public abstract class AbstractRedisZSetTestIntegration<T> extends AbstractRedisC
@ParameterizedRedisTest
void testLast() {
T t1 = getT();
T t2 = getT();
T t3 = getT();
@@ -138,6 +173,38 @@ public abstract class AbstractRedisZSetTestIntegration<T> extends AbstractRedisC
assertThat(zSet.last()).isEqualTo(t3);
}
@ParameterizedRedisTest
@EnabledOnCommand("ZPOPMAX")
void testPopLast() {
T t1 = getT();
T t2 = getT();
T t3 = getT();
zSet.add(t1, 3);
zSet.add(t2, 4);
zSet.add(t3, 5);
assertThat(zSet.popLast()).isEqualTo(t3);
assertThat(zSet).hasSize(2);
}
@ParameterizedRedisTest
@EnabledOnCommand("ZPOPMAX")
void testPopLastWithTimeout() {
T t1 = getT();
T t2 = getT();
T t3 = getT();
zSet.add(t1, 3);
zSet.add(t2, 4);
zSet.add(t3, 5);
assertThat(zSet.popLast(1, TimeUnit.SECONDS)).isEqualTo(t3);
assertThat(zSet).hasSize(2);
}
@ParameterizedRedisTest
void testLastException() {
assertThatExceptionOfType(NoSuchElementException.class).isThrownBy(() -> zSet.last());