// Copyright (C) 2011 - Will Glozer. All rights reserved.
package com.lambdaworks.redis;
import org.junit.Test;
import java.util.List;
import java.util.concurrent.TimeUnit;
import static org.junit.Assert.*;
public class ListCommandTest extends AbstractCommandTest {
@Test
public void blpop() throws Exception {
redis.rpush("two", "2", "3");
assertEquals(kv("two", "2"), redis.blpop(1, "one", "two"));
}
@Test
public void blpopTimeout() throws Exception {
redis.setTimeout(10, TimeUnit.SECONDS);
assertNull(redis.blpop(1, key));
}
@Test
public void brpop() throws Exception {
redis.rpush("two", "2", "3");
assertEquals(kv("two", "3"), redis.brpop(1, "one", "two"));
}
@Test
public void brpoplpush() throws Exception {
redis.rpush("one", "1", "2");
redis.rpush("two", "3", "4");
assertEquals("2", redis.brpoplpush(1, "one", "two"));
assertEquals(list("1"), redis.lrange("one", 0, -1));
assertEquals(list("2", "3", "4"), redis.lrange("two", 0, -1));
}
@Test
public void brpoplpushTimeout() throws Exception {
assertNull(redis.brpoplpush(1, "one", "two"));
}
@Test
public void lindex() throws Exception {
assertNull(redis.lindex(key, 0));
redis.rpush(key, "one");
assertEquals("one", redis.lindex(key, 0));
}
@Test
public void linsert() throws Exception {
assertEquals(0, (long) redis.linsert(key, false, "one", "two"));
redis.rpush(key, "one");
redis.rpush(key, "three");
assertEquals(3, (long) redis.linsert(key, true, "three", "two"));
assertEquals(list("one", "two", "three"), redis.lrange(key, 0, -1));
}
@Test
public void llen() throws Exception {
assertEquals(0, (long) redis.llen(key));
redis.lpush(key, "one");
assertEquals(1, (long) redis.llen(key));
}
@Test
public void lpop() throws Exception {
assertNull(redis.lpop(key));
redis.rpush(key, "one", "two");
assertEquals("one", redis.lpop(key));
assertEquals(list("two"), redis.lrange(key, 0, -1));
}
@Test
public void lpush() throws Exception {
assertEquals(1, (long) redis.lpush(key, "two"));
assertEquals(2, (long) redis.lpush(key, "one"));
assertEquals(list("one", "two"), redis.lrange(key, 0, -1));
assertEquals(4, (long) redis.lpush(key, "three", "four"));
assertEquals(list("four", "three", "one", "two"), redis.lrange(key, 0, -1));
}
@Test
public void lpushx() throws Exception {
assertEquals(0, (long) redis.lpushx(key, "two"));
redis.lpush(key, "two");
assertEquals(2, (long) redis.lpushx(key, "one"));
assertEquals(list("one", "two"), redis.lrange(key, 0, -1));
}
@Test
public void lrange() throws Exception {
assertTrue(redis.lrange(key, 0, 10).isEmpty());
redis.rpush(key, "one", "two", "three");
List<String> range = redis.lrange(key, 0, 1);
assertEquals(2, range.size());
assertEquals("one", range.get(0));
assertEquals("two", range.get(1));
assertEquals(3, redis.lrange(key, 0, -1).size());
}
@Test
public void lrem() throws Exception {
assertEquals(0, (long) redis.lrem(key, 0, value));
redis.rpush(key, "1", "2", "1", "2", "1");
assertEquals(1, (long) redis.lrem(key, 1, "1"));
assertEquals(list("2", "1", "2", "1"), redis.lrange(key, 0, -1));
redis.lpush(key, "1");
assertEquals(1, (long) redis.lrem(key, -1, "1"));
assertEquals(list("1", "2", "1", "2"), redis.lrange(key, 0, -1));
redis.lpush(key, "1");
assertEquals(3, (long) redis.lrem(key, 0, "1"));
assertEquals(list("2", "2"), redis.lrange(key, 0, -1));
}
@Test
public void lset() throws Exception {
redis.rpush(key, "one", "two", "three");
assertEquals("OK", redis.lset(key, 2, "san"));
assertEquals(list("one", "two", "san"), redis.lrange(key, 0, -1));
}
@Test
public void ltrim() throws Exception {
redis.rpush(key, "1", "2", "3", "4", "5", "6");
assertEquals("OK", redis.ltrim(key, 0, 3));
assertEquals(list("1", "2", "3", "4"), redis.lrange(key, 0, -1));
assertEquals("OK", redis.ltrim(key, -2, -1));
assertEquals(list("3", "4"), redis.lrange(key, 0, -1));
}
@Test
public void rpop() throws Exception {
assertNull(redis.rpop(key));
redis.rpush(key, "one", "two");
assertEquals("two", redis.rpop(key));
assertEquals(list("one"), redis.lrange(key, 0, -1));
}
@Test
public void rpoplpush() throws Exception {
assertNull(redis.rpoplpush("one", "two"));
redis.rpush("one", "1", "2");
redis.rpush("two", "3", "4");
assertEquals("2", redis.rpoplpush("one", "two"));
assertEquals(list("1"), redis.lrange("one", 0, -1));
assertEquals(list("2", "3", "4"), redis.lrange("two", 0, -1));
}
@Test
public void rpush() throws Exception {
assertEquals(1, (long) redis.rpush(key, "one"));
assertEquals(2, (long) redis.rpush(key, "two"));
assertEquals(list("one", "two"), redis.lrange(key, 0, -1));
assertEquals(4, (long) redis.rpush(key, "three", "four"));
assertEquals(list("one", "two", "three", "four"), redis.lrange(key, 0, -1));
}
@Test
public void rpushx() throws Exception {
assertEquals(0, (long) redis.rpushx(key, "one"));
redis.rpush(key, "one");
assertEquals(2, (long) redis.rpushx(key, "two"));
assertEquals(list("one", "two"), redis.lrange(key, 0, -1));
}
}