+ several improvements/bugfixes applied to RedisList
+ more redis list tests
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
package org.springframework.datastore.redis.util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
@@ -37,14 +38,14 @@ abstract class CollectionUtils {
|
||||
return result;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
static <E> Collection<E> reverse(Collection<? extends E> c) {
|
||||
List<E> reverse = new ArrayList<E>(c.size());
|
||||
|
||||
Object[] reverse = new Object[c.size()];
|
||||
int index = c.size();
|
||||
for (E e : c) {
|
||||
reverse.add(--index, e);
|
||||
reverse[--index] = e;
|
||||
}
|
||||
|
||||
return reverse;
|
||||
return (List<E>) Arrays.asList(reverse);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,6 +140,9 @@ public class DefaultRedisList<E> extends AbstractRedisCollection<E> implements R
|
||||
|
||||
@Override
|
||||
public E get(int index) {
|
||||
if (index < 0 || index > size()) {
|
||||
throw new IndexOutOfBoundsException();
|
||||
}
|
||||
return serializer.deserialize(commands.lIndex(key, index));
|
||||
}
|
||||
|
||||
@@ -201,13 +204,15 @@ public class DefaultRedisList<E> extends AbstractRedisCollection<E> implements R
|
||||
|
||||
@Override
|
||||
public E peek() {
|
||||
return serializer.deserialize(commands.lIndex(key, 0));
|
||||
String element = commands.lIndex(key, 0);
|
||||
return (element == null ? null : (E) serializer.deserialize(element));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public E poll() {
|
||||
return serializer.deserialize(commands.lPop(key));
|
||||
String element = commands.lPop(key);
|
||||
return (element == null ? null : (E) serializer.deserialize(element));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -63,12 +63,12 @@ public abstract class AbstractRedisListTest<T> extends AbstractRedisCollectionTe
|
||||
list.add(t1);
|
||||
list.add(t2);
|
||||
|
||||
assertEquals(t1, list.get(2));
|
||||
assertEquals(t2, list.get(1));
|
||||
list.add(2, t3);
|
||||
assertEquals(t3, list.get(2));
|
||||
}
|
||||
|
||||
@Test(expected = UnsupportedOperationException.class)
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testAddIndexObjectMiddle() {
|
||||
T t1 = getT();
|
||||
T t2 = getT();
|
||||
@@ -95,7 +95,9 @@ public abstract class AbstractRedisListTest<T> extends AbstractRedisCollectionTe
|
||||
|
||||
assertEquals(t1, list.get(0));
|
||||
list.addAll(0, asList);
|
||||
// verify insertion order
|
||||
assertEquals(t3, list.get(0));
|
||||
assertEquals(t4, list.get(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -112,10 +114,13 @@ public abstract class AbstractRedisListTest<T> extends AbstractRedisCollectionTe
|
||||
|
||||
assertEquals(t1, list.get(0));
|
||||
assertTrue(list.addAll(2, asList));
|
||||
assertEquals(t4, list.get(0));
|
||||
|
||||
// verify insertion order
|
||||
assertEquals(t3, list.get(2));
|
||||
assertEquals(t4, list.get(3));
|
||||
}
|
||||
|
||||
@Test(expected = UnsupportedOperationException.class)
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void addAllIndexCollectionMiddle() {
|
||||
T t1 = getT();
|
||||
T t2 = getT();
|
||||
@@ -131,7 +136,7 @@ public abstract class AbstractRedisListTest<T> extends AbstractRedisCollectionTe
|
||||
assertTrue(list.addAll(1, asList));
|
||||
}
|
||||
|
||||
@Test
|
||||
@Test(expected = UnsupportedOperationException.class)
|
||||
public void testIndexOfObject() {
|
||||
T t1 = getT();
|
||||
T t2 = getT();
|
||||
@@ -149,9 +154,8 @@ public abstract class AbstractRedisListTest<T> extends AbstractRedisCollectionTe
|
||||
public void testOffer() {
|
||||
T t1 = getT();
|
||||
|
||||
assertFalse(list.offer(t1));
|
||||
list.add(t1);
|
||||
assertTrue(list.offer(t1));
|
||||
assertTrue(list.contains(t1));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -224,10 +228,10 @@ public abstract class AbstractRedisListTest<T> extends AbstractRedisCollectionTe
|
||||
list.add(t2);
|
||||
assertEquals(2, list.range(0, -1).size());
|
||||
assertEquals(t1, list.range(0, 0).get(0));
|
||||
assertEquals(t2, list.range(1, 0).get(0));
|
||||
assertEquals(t2, list.range(1, 1).get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
@Test(expected = UnsupportedOperationException.class)
|
||||
public void testRemoveIndex() {
|
||||
T t1 = getT();
|
||||
T t2 = getT();
|
||||
|
||||
@@ -25,7 +25,7 @@ import org.springframework.datastore.redis.connection.jedis.JedisConnectionFacto
|
||||
*
|
||||
* @author Costin Leau
|
||||
*/
|
||||
public class StringRedisListTest extends AbstractRedisCollectionTest<String> {
|
||||
public class StringRedisListTest extends AbstractRedisListTest<String> {
|
||||
|
||||
private JedisConnectionFactory factory;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user