LMoveMParamsTest.java
package redis.clients.jedis.params;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static redis.clients.jedis.util.CommandArgumentsMatchers.hasArgumentCount;
import static redis.clients.jedis.util.CommandArgumentsMatchers.hasArguments;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.CommandArguments;
import redis.clients.jedis.Protocol;
import redis.clients.jedis.Protocol.Keyword;
import redis.clients.jedis.args.ListMoveOrder;
import redis.clients.jedis.args.RawableFactory;
public class LMoveMParamsTest {
@Nested
class ValidationTests {
@Test
public void nullOrderingThrows() {
assertThrows(IllegalArgumentException.class,
() -> LMoveMParams.lMoveMParams().count(2, null));
assertThrows(IllegalArgumentException.class,
() -> LMoveMParams.lMoveMParams().exactly(3, null));
}
@Test
public void emptyParamsThrows() {
LMoveMParams params = LMoveMParams.lMoveMParams();
assertThrows(IllegalArgumentException.class,
() -> params.addParams(new CommandArguments(Protocol.Command.LMOVEM)));
}
}
@Nested
class AddParamsTests {
@Test
public void countObo() {
LMoveMParams params = LMoveMParams.lMoveMParams().count(2, ListMoveOrder.OBO);
CommandArguments args = new CommandArguments(Protocol.Command.LMOVEM);
params.addParams(args);
assertThat(args, hasArgumentCount(4));
assertThat(args, hasArguments(Protocol.Command.LMOVEM, Keyword.COUNT, RawableFactory.from(2),
ListMoveOrder.OBO));
}
@Test
public void exactlyBulk() {
LMoveMParams params = LMoveMParams.lMoveMParams().exactly(3, ListMoveOrder.BULK);
CommandArguments args = new CommandArguments(Protocol.Command.LMOVEM);
params.addParams(args);
assertThat(args, hasArgumentCount(4));
assertThat(args, hasArguments(Protocol.Command.LMOVEM, Keyword.EXACTLY,
RawableFactory.from(3), ListMoveOrder.BULK));
}
@Test
public void selectorIsLastWins() {
LMoveMParams params = LMoveMParams.lMoveMParams().count(2, ListMoveOrder.OBO).exactly(5,
ListMoveOrder.BULK);
CommandArguments args = new CommandArguments(Protocol.Command.LMOVEM);
params.addParams(args);
assertThat(args, hasArguments(Protocol.Command.LMOVEM, Keyword.EXACTLY,
RawableFactory.from(5), ListMoveOrder.BULK));
}
}
@Nested
class EqualsHashCodeTests {
@Test
public void equalWhenSameConfiguration() {
LMoveMParams a = LMoveMParams.lMoveMParams().count(2, ListMoveOrder.OBO);
LMoveMParams b = LMoveMParams.lMoveMParams().count(2, ListMoveOrder.OBO);
assertTrue(a.equals(b));
assertEquals(a.hashCode(), b.hashCode());
}
@Test
public void notEqualWhenSelectorDiffers() {
LMoveMParams a = LMoveMParams.lMoveMParams().count(2, ListMoveOrder.OBO);
LMoveMParams b = LMoveMParams.lMoveMParams().exactly(2, ListMoveOrder.OBO);
assertFalse(a.equals(b));
}
@Test
public void notEqualWhenCountDiffers() {
LMoveMParams a = LMoveMParams.lMoveMParams().count(2, ListMoveOrder.BULK);
LMoveMParams b = LMoveMParams.lMoveMParams().count(3, ListMoveOrder.BULK);
assertFalse(a.equals(b));
assertNotEquals(a.hashCode(), b.hashCode());
}
@Test
public void notEqualWhenOrderingDiffers() {
LMoveMParams a = LMoveMParams.lMoveMParams().count(2, ListMoveOrder.OBO);
LMoveMParams b = LMoveMParams.lMoveMParams().count(2, ListMoveOrder.BULK);
assertFalse(a.equals(b));
}
@Test
public void notEqualToNull() {
LMoveMParams a = LMoveMParams.lMoveMParams().count(2, ListMoveOrder.OBO);
assertFalse(a.equals(null));
}
}
}