DATAKV-12

+ add integration tests
+ fix minor connection bug
This commit is contained in:
Costin Leau
2010-12-06 16:44:09 +02:00
parent b9d3d77bc6
commit c41e57fe6b
3 changed files with 223 additions and 7 deletions

View File

@@ -670,7 +670,7 @@ public class JedisConnection implements RedisConnection {
transaction.rpop(key);
return null;
}
return jedis.lpop(key);
return jedis.rpop(key);
} catch (Exception ex) {
throw convertJedisAccessException(ex);
}

View File

@@ -16,6 +16,7 @@
package org.springframework.data.keyvalue.redis.util;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
@@ -45,7 +46,7 @@ public class DefaultRedisList<E> extends AbstractRedisCollection<E> implements R
private volatile long defaultWait = 0;
private class DefaultRedisListIterator<E> extends RedisIterator<E> {
private class DefaultRedisListIterator extends RedisIterator<E> {
public DefaultRedisListIterator(Iterator<E> delegate) {
super(delegate);
@@ -122,7 +123,7 @@ public class DefaultRedisList<E> extends AbstractRedisCollection<E> implements R
@Override
public Iterator<E> iterator() {
return content().iterator();
return new DefaultRedisListIterator(content().iterator());
}
@Override
@@ -308,7 +309,9 @@ public class DefaultRedisList<E> extends AbstractRedisCollection<E> implements R
@Override
public Iterator<E> descendingIterator() {
throw new UnsupportedOperationException();
List<E> content = content();
Collections.reverse(content);
return new DefaultRedisListIterator(content.iterator());
}
@Override
@@ -359,7 +362,7 @@ public class DefaultRedisList<E> extends AbstractRedisCollection<E> implements R
@Override
public E pop() {
E e = pollFirst();
E e = poll();
if (e == null) {
throw new NoSuchElementException();
}

View File

@@ -16,8 +16,11 @@
package org.springframework.data.keyvalue.redis.util;
import static org.junit.Assert.*;
import static org.junit.matchers.JUnitMatchers.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
@@ -151,11 +154,11 @@ public abstract class AbstractRedisListTests<T> extends AbstractRedisCollectionT
public void testIndexOfObject() {
T t1 = getT();
T t2 = getT();
assertEquals(-1, list.indexOf(t1));
list.add(t1);
assertEquals(0, list.indexOf(t1));
assertEquals(-1, list.indexOf(t2));
list.add(t2);
assertEquals(1, list.indexOf(t1));
@@ -200,6 +203,11 @@ public abstract class AbstractRedisListTests<T> extends AbstractRedisCollectionT
}
}
@Test
public void testPop() {
testPoll();
}
@Test
public void testPoll() {
assertNull(list.poll());
@@ -282,4 +290,209 @@ public abstract class AbstractRedisListTests<T> extends AbstractRedisCollectionT
assertEquals(1, cappedList.size());
assertEquals(first, cappedList.get(0));
}
@Test
public void testAddFirst() {
T t1 = getT();
T t2 = getT();
T t3 = getT();
list.addFirst(t1);
list.addFirst(t2);
list.addFirst(t3);
Iterator<T> iterator = list.iterator();
assertEquals(t3, iterator.next());
assertEquals(t2, iterator.next());
assertEquals(t1, iterator.next());
}
@Test
public void testAddLast() {
testAdd();
}
@Test
public void testDescendingIterator() {
T t1 = getT();
T t2 = getT();
T t3 = getT();
list.add(t1);
list.add(t2);
list.add(t3);
Iterator<T> iterator = list.descendingIterator();
assertEquals(t3, iterator.next());
assertEquals(t2, iterator.next());
assertEquals(t1, iterator.next());
}
@Test
public void testDrainToCollectionWithMaxElements() {
T t1 = getT();
T t2 = getT();
T t3 = getT();
list.add(t1);
list.add(t2);
list.add(t3);
List<T> c = new ArrayList<T>();
list.drainTo(c, 2);
assertEquals(1, list.size());
assertThat(list, hasItem(t3));
assertEquals(2, c.size());
assertThat(c, hasItems(t1, t2));
}
@Test
public void testDrainToCollection() {
T t1 = getT();
T t2 = getT();
T t3 = getT();
list.add(t1);
list.add(t2);
list.add(t3);
List<T> c = new ArrayList<T>();
list.drainTo(c);
assertTrue(list.isEmpty());
assertEquals(3, c.size());
assertThat(c, hasItems(t1, t2, t3));
}
@Test
public void testGetFirst() {
T t1 = getT();
T t2 = getT();
list.add(t1);
list.add(t2);
assertEquals(t1, list.getFirst());
}
@Test
public void testLast() {
testAdd();
}
@Test
public void testOfferFirst() {
testAddFirst();
}
@Test
public void testOfferLast() {
testAddLast();
}
@Test
public void testPeekFirst() {
testPeek();
}
@Test
public void testPeekLast() {
T t1 = getT();
T t2 = getT();
list.add(t1);
list.add(t2);
assertEquals(t2, list.peekLast());
assertEquals(2, list.size());
}
@Test
public void testPollFirst() {
testPoll();
}
@Test
public void testPollLast() {
T t1 = getT();
T t2 = getT();
list.add(t1);
list.add(t2);
T last = list.pollLast();
assertEquals(t2, last);
assertEquals(1, list.size());
assertThat(list, hasItem(t1));
}
@Test
public void testPut() {
testOffer();
}
@Test
public void testPutFirst() {
testAdd();
}
@Test
public void testPutLast() {
testPut();
}
@Test
public void testRemainingCapacity() {
assertEquals(Integer.MAX_VALUE, list.remainingCapacity());
}
@Test
public void testRemoveFirst() {
testPop();
}
@Test
public void testRemoveFirstOccurrence() {
testRemove();
}
@Test
public void testRemoveLast() {
testPollLast();
}
@Test
public void testRmoveLastOccurrence() {
T t1 = getT();
T t2 = getT();
list.add(t1);
list.add(t2);
list.add(t1);
list.add(t2);
list.removeLastOccurrence(t2);
assertEquals(3, list.size());
Iterator<T> iterator = list.iterator();
assertEquals(t1, iterator.next());
assertEquals(t2, iterator.next());
assertEquals(t1, iterator.next());
}
@Test
public void testTake() {
testPoll();
}
@Test
public void testTakeFirst() {
testTake();
}
@Test
public void testTakeLast() {
testPollLast();
}
}