Fix wrong test on lists / sets.

Lists comparison now take care of the order, which is not the case for Sets.
This commit is contained in:
Yaourt
2010-11-07 10:49:45 +01:00
parent 424512d4e6
commit 3281bafd2e
5 changed files with 118 additions and 56 deletions

View File

@@ -6,6 +6,7 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.swing.tree.ExpandVetoException;
@@ -49,7 +50,7 @@ public class JedisTest extends JedisCommandTestBase {
}
@SuppressWarnings("rawtypes")
public static boolean isListAreEquals(Collection expected, Collection result) {
public static boolean isSetAreEquals(Set expected, Set result) {
if(expected.size() != result.size()) {
return false;
}
@@ -67,9 +68,15 @@ public class JedisTest extends JedisCommandTestBase {
if(Arrays.equals(bexp, bresp)) {
found = true;
}
} else if (exp instanceof Collection && resp instanceof Collection) {
final Collection subexp = (Collection) exp;
final Collection subresp = (Collection) resp;
} else if (exp instanceof Set && resp instanceof Set) {
final Set subexp = (Set) exp;
final Set subresp = (Set) resp;
if(isSetAreEquals(subexp, subresp)) {
found = true;
}
} else if (exp instanceof List && resp instanceof List) {
final List subexp = (List) exp;
final List subresp = (List) resp;
if(isListAreEquals(subexp, subresp)) {
found = true;
}
@@ -93,7 +100,56 @@ public class JedisTest extends JedisCommandTestBase {
return true;
}
// public static boolean isArraysAreEqualsPlop(final byte[] expected, final byte[] result) {
@SuppressWarnings("rawtypes")
public static boolean isListAreEquals(List expected, List result) {
if(expected.size() != result.size()) {
return false;
}
final Iterator expectedit = expected.iterator();
final Iterator responseit = result.iterator();
int index = -1;
while(expectedit.hasNext() && responseit.hasNext()) {
index++;
final Object exp = expectedit.next();
final Object resp = responseit.next();
if(exp instanceof byte[] && resp instanceof byte[]) {
final byte[] bexp = (byte[]) exp;
final byte[] bresp = (byte[]) resp;
if(Arrays.equals(bexp, bresp)) {
continue;
}
} else if (exp instanceof Set && resp instanceof Set) {
final Set subexp = (Set) exp;
final Set subresp = (Set) resp;
if(isSetAreEquals(subexp, subresp)) {
continue;
}
} else if (exp instanceof List && resp instanceof List) {
final List subexp = (List) exp;
final List subresp = (List) resp;
if(isListAreEquals(subexp, subresp)) {
continue;
}
} else {
if (null != exp) {
if (exp.equals(resp)){
continue;
}
} else {
if(resp == null) {
continue;
}
}
}
fail("Element at index "+index+" differs. Expecting "+(null == exp ? null : exp.toString())+" but was "+(resp == null ? null : resp.toString()));
}
return true;
}
// public static boolean isArraysAreEqualsPlop(final byte[] expected, final byte[] result) {
// if(expected.length != result.length) {
// return false;
// }

View File

@@ -2,7 +2,9 @@ package redis.clients.jedis.tests.commands;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.junit.Test;
@@ -21,6 +23,8 @@ public class AllKindOfValuesCommandsTest extends JedisCommandTestBase {
final byte[] bbar3 = {0x05, 0x06, 0x07, 0x08, 0x0C};
final byte[] bfoobar = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
final byte[] bfoostar = {0x01, 0x02, 0x03, 0x04, '*'};
final byte[] bbarstar = {0x05, 0x06, 0x07, 0x08, '*'};
@Test
public void ping() {
@@ -120,13 +124,13 @@ public class AllKindOfValuesCommandsTest extends JedisCommandTestBase {
jedis.set("foo", "bar");
jedis.set("foobar", "bar");
List<String> keys = jedis.keys("foo*");
List<String> expected = new ArrayList<String>();
Set<String> keys = jedis.keys("foo*");
Set<String> expected = new HashSet<String>();
expected.add("foo");
expected.add("foobar");
assertEquals(expected, keys);
expected = new ArrayList<String>();
expected = new HashSet<String>();
keys = jedis.keys("bar*");
assertEquals(expected, keys);
@@ -135,20 +139,20 @@ public class AllKindOfValuesCommandsTest extends JedisCommandTestBase {
jedis.set(bfoo, bbar);
jedis.set(bfoobar, bbar);
byte[] bfoostar = new byte[bfoo.length+1];
System.arraycopy(bfoo, 0, bfoostar, 0, bfoo.length);
bfoostar[bfoostar.length-1] = '*';
List<byte[]> bkeys = jedis.keys(bfoostar);
List<byte[]> bexpected = new ArrayList<byte[]>();
// byte[] bfoostar = new byte[bfoo.length+1];
// System.arraycopy(bfoo, 0, bfoostar, 0, bfoo.length);
// bfoostar[bfoostar.length-1] = '*';
Set<byte[]> bkeys = jedis.keys(bfoostar);
Set<byte[]> bexpected = new HashSet<byte[]>();
bexpected.add(bfoo);
bexpected.add(bfoobar);
assertTrue(JedisTest.isListAreEquals(bexpected, bkeys));
assertTrue(JedisTest.isSetAreEquals(bexpected, bkeys));
// assertEquals(expected, keys);
expected = new ArrayList<String>();
keys = jedis.keys("bar*");
bexpected = new HashSet<byte[]>();
bkeys = jedis.keys(bbarstar);
assertEquals(expected, keys);
assertTrue(JedisTest.isSetAreEquals(bexpected, bkeys));
}

View File

@@ -3,9 +3,11 @@ package redis.clients.jedis.tests.commands;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.junit.Test;
@@ -291,12 +293,12 @@ public class HashesCommandsTest extends JedisCommandTestBase {
Map<byte[], byte[]> bexpected = new HashMap<byte[], byte[]>();
bexpected.put(bbar, bcar);
bexpected.put(bcar, bbar);
final Collection<byte[]> keysetExpected = bexpected.keySet();
final Collection<byte[]> keysetResult = bhash.keySet();
assertTrue(JedisTest.isListAreEquals(keysetExpected, keysetResult));
final Collection<byte[]> valsExpected = bexpected.values();
final Collection<byte[]> valsResult = bhash.values();
assertTrue(JedisTest.isListAreEquals(valsExpected, valsResult));
final Set<byte[]> keysetExpected = bexpected.keySet();
final Set<byte[]> keysetResult = bhash.keySet();
assertTrue(JedisTest.isSetAreEquals(keysetExpected, keysetResult));
final Set<byte[]> valsExpected = new HashSet<byte[]>(bexpected.values());
final Set<byte[]> valsResult = new HashSet<byte[]>(bhash.values());
assertTrue(JedisTest.isSetAreEquals(valsExpected, valsResult));
}
}

View File

@@ -58,7 +58,7 @@ public class SetCommandsTest extends JedisCommandTestBase {
Set<byte[]> bmembers = jedis.smembers(bfoo);
assertTrue(JedisTest.isListAreEquals(bexpected, bmembers));
assertTrue(JedisTest.isSetAreEquals(bexpected, bmembers));
}
@@ -90,7 +90,7 @@ public class SetCommandsTest extends JedisCommandTestBase {
bexpected.add(bb);
assertEquals(1, bstatus);
assertTrue(JedisTest.isListAreEquals(bexpected, jedis.smembers(bfoo)));
assertTrue(JedisTest.isSetAreEquals(bexpected, jedis.smembers(bfoo)));
bstatus = jedis.srem(bfoo, bbar);
@@ -165,8 +165,8 @@ public class SetCommandsTest extends JedisCommandTestBase {
bexpectedDst.add(ba);
assertEquals(bstatus, 1);
assertTrue(JedisTest.isListAreEquals(bexpectedSrc, jedis.smembers(bfoo)));
assertTrue(JedisTest.isListAreEquals(bexpectedDst, jedis.smembers(bbar)));
assertTrue(JedisTest.isSetAreEquals(bexpectedSrc, jedis.smembers(bfoo)));
assertTrue(JedisTest.isSetAreEquals(bexpectedDst, jedis.smembers(bbar)));
bstatus = jedis.smove(bfoo, bbar, ba);
assertEquals(bstatus, 0);
@@ -246,7 +246,7 @@ public class SetCommandsTest extends JedisCommandTestBase {
bexpected.add(bb);
Set<byte[]> bintersection = jedis.sinter(bfoo, bbar);
assertTrue(JedisTest.isListAreEquals(bexpected, bintersection));
assertTrue(JedisTest.isSetAreEquals(bexpected, bintersection));
}
@@ -279,7 +279,7 @@ public class SetCommandsTest extends JedisCommandTestBase {
int bstatus = jedis.sinterstore(bcar, bfoo, bbar);
assertEquals(1, bstatus);
assertTrue(JedisTest.isListAreEquals(bexpected, jedis.smembers(bcar)));
assertTrue(JedisTest.isSetAreEquals(bexpected, jedis.smembers(bcar)));
}
@@ -312,7 +312,7 @@ public class SetCommandsTest extends JedisCommandTestBase {
bexpected.add(bc);
Set<byte[]> bunion = jedis.sunion(bfoo, bbar);
assertTrue(JedisTest.isListAreEquals(bexpected, bunion));
assertTrue(JedisTest.isSetAreEquals(bexpected, bunion));
}
@@ -349,7 +349,7 @@ public class SetCommandsTest extends JedisCommandTestBase {
int bstatus = jedis.sunionstore(bcar, bfoo, bbar);
assertEquals(3, bstatus);
assertTrue(JedisTest.isListAreEquals(bexpected, jedis.smembers(bcar)));
assertTrue(JedisTest.isSetAreEquals(bexpected, jedis.smembers(bcar)));
}
@@ -388,7 +388,7 @@ public class SetCommandsTest extends JedisCommandTestBase {
bexpected.add(bb);
Set<byte[]> bdiff = jedis.sdiff(bfoo, bbar, bcar);
assertTrue(JedisTest.isListAreEquals(bexpected, bdiff));
assertTrue(JedisTest.isSetAreEquals(bexpected, bdiff));
}
@@ -429,7 +429,7 @@ public class SetCommandsTest extends JedisCommandTestBase {
int bstatus = jedis.sdiffstore("tar".getBytes(), bfoo, bbar, bcar);
assertEquals(2, bstatus);
assertTrue(JedisTest.isListAreEquals(bexpected, jedis.smembers(bcar)));
assertTrue(JedisTest.isSetAreEquals(bexpected, jedis.smembers(bcar)));
}

View File

@@ -76,11 +76,11 @@ public class SortedSetCommandsTest extends JedisCommandTestBase {
bexpected.add(ba);
Set<byte[]> brange = jedis.zrange(bfoo, 0, 1);
assertTrue(JedisTest.isListAreEquals(bexpected, brange));
assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
bexpected.add(bb);
brange = jedis.zrange(bfoo, 0, 100);
assertTrue(JedisTest.isListAreEquals(bexpected, brange));
assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
}
@@ -113,11 +113,11 @@ public class SortedSetCommandsTest extends JedisCommandTestBase {
bexpected.add(ba);
Set<byte[]> brange = jedis.zrevrange(bfoo, 0, 1);
assertTrue(JedisTest.isListAreEquals(bexpected, brange));
assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
bexpected.add(bc);
brange = jedis.zrevrange(bfoo, 0, 100);
assertTrue(JedisTest.isListAreEquals(bexpected, brange));
assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
}
@@ -148,7 +148,7 @@ public class SortedSetCommandsTest extends JedisCommandTestBase {
bexpected.add(bb);
assertEquals(1, bstatus);
assertTrue(JedisTest.isListAreEquals(bexpected, jedis.zrange(bfoo, 0, 100)));
assertTrue(JedisTest.isSetAreEquals(bexpected, jedis.zrange(bfoo, 0, 100)));
bstatus = jedis.zrem(bfoo, bbar);
@@ -181,7 +181,7 @@ public class SortedSetCommandsTest extends JedisCommandTestBase {
bexpected.add(bb);
assertEquals(3d, bscore, 0);
assertTrue(JedisTest.isListAreEquals(bexpected, jedis.zrange(bfoo, 0, 100)));
assertTrue(JedisTest.isSetAreEquals(bexpected, jedis.zrange(bfoo, 0, 100)));
}
@@ -266,11 +266,11 @@ public class SortedSetCommandsTest extends JedisCommandTestBase {
bexpected.add(new Tuple(ba, 2d));
Set<Tuple> brange = jedis.zrangeWithScores(bfoo, 0, 1);
assertTrue(JedisTest.isListAreEquals(bexpected, brange));
assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
bexpected.add(new Tuple(bb, 10d));
brange = jedis.zrangeWithScores(bfoo, 0, 100);
assertTrue(JedisTest.isListAreEquals(bexpected, brange));
assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
}
@@ -303,11 +303,11 @@ public class SortedSetCommandsTest extends JedisCommandTestBase {
bexpected.add(new Tuple(ba, 2d));
Set<Tuple> brange = jedis.zrevrangeWithScores(bfoo, 0, 1);
assertTrue(JedisTest.isListAreEquals(bexpected, brange));
assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
bexpected.add(new Tuple(bc, 0.1d));
brange = jedis.zrevrangeWithScores(bfoo, 0, 100);
assertTrue(JedisTest.isListAreEquals(bexpected, brange));
assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
}
@@ -431,23 +431,23 @@ public class SortedSetCommandsTest extends JedisCommandTestBase {
bexpected.add(bc);
bexpected.add(ba);
assertTrue(JedisTest.isListAreEquals(bexpected, brange));
assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
brange = jedis.zrangeByScore(bfoo, 0d, 2d, 0, 1);
bexpected = new LinkedHashSet<byte[]>();
bexpected.add(bc);
assertTrue(JedisTest.isListAreEquals(bexpected, brange));
assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
brange = jedis.zrangeByScore(bfoo, 0d, 2d, 1, 1);
Set<byte[]> brange2 = jedis.zrangeByScore(bfoo, "-inf".getBytes(Protocol.UTF8), "(2".getBytes(Protocol.UTF8));
assertTrue(JedisTest.isListAreEquals(bexpected, brange2));
assertTrue(JedisTest.isSetAreEquals(bexpected, brange2));
bexpected = new LinkedHashSet<byte[]>();
bexpected.add(ba);
assertTrue(JedisTest.isListAreEquals(bexpected, brange));
assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
}
@@ -493,21 +493,21 @@ public class SortedSetCommandsTest extends JedisCommandTestBase {
bexpected.add(new Tuple(bc, 0.1d));
bexpected.add(new Tuple(ba, 2d));
assertTrue(JedisTest.isListAreEquals(bexpected, brange));
assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
brange = jedis.zrangeByScoreWithScores(bfoo, 0d, 2d, 0, 1);
bexpected = new LinkedHashSet<Tuple>();
bexpected.add(new Tuple(bc, 0.1d));
assertTrue(JedisTest.isListAreEquals(bexpected, brange));
assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
brange = jedis.zrangeByScoreWithScores(bfoo, 0d, 2d, 1, 1);
bexpected = new LinkedHashSet<Tuple>();
bexpected.add(new Tuple(ba, 2d));
assertTrue(JedisTest.isListAreEquals(bexpected, brange));
assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
}
@@ -542,7 +542,7 @@ public class SortedSetCommandsTest extends JedisCommandTestBase {
bexpected.add(ba);
bexpected.add(bb);
assertTrue(JedisTest.isListAreEquals(bexpected, jedis.zrange(bfoo, 0, 100)));
assertTrue(JedisTest.isSetAreEquals(bexpected, jedis.zrange(bfoo, 0, 100)));
}
@@ -575,7 +575,7 @@ public class SortedSetCommandsTest extends JedisCommandTestBase {
Set<byte[]> bexpected = new LinkedHashSet<byte[]>();
bexpected.add(bb);
assertTrue(JedisTest.isListAreEquals(bexpected, jedis.zrange(bfoo, 0, 100)));
assertTrue(JedisTest.isSetAreEquals(bexpected, jedis.zrange(bfoo, 0, 100)));
}
@@ -610,7 +610,7 @@ public class SortedSetCommandsTest extends JedisCommandTestBase {
bexpected.add(new Tuple(bb, new Double(4)));
bexpected.add(new Tuple(ba, new Double(3)));
assertTrue(JedisTest.isListAreEquals(bexpected, jedis.zrangeWithScores("dst".getBytes(Protocol.UTF8), 0, 100)));
assertTrue(JedisTest.isSetAreEquals(bexpected, jedis.zrangeWithScores("dst".getBytes(Protocol.UTF8), 0, 100)));
}
@@ -651,7 +651,7 @@ public class SortedSetCommandsTest extends JedisCommandTestBase {
bexpected.add(new Tuple(bb, new Double(8)));
bexpected.add(new Tuple(ba, new Double(6)));
assertTrue(JedisTest.isListAreEquals(bexpected, jedis.zrangeWithScores("dst".getBytes(Protocol.UTF8), 0, 100)));
assertTrue(JedisTest.isSetAreEquals(bexpected, jedis.zrangeWithScores("dst".getBytes(Protocol.UTF8), 0, 100)));
}
@@ -682,7 +682,7 @@ public class SortedSetCommandsTest extends JedisCommandTestBase {
Set<Tuple> bexpected = new LinkedHashSet<Tuple>();
bexpected.add(new Tuple(ba, new Double(3)));
assertTrue(JedisTest.isListAreEquals(bexpected, jedis.zrangeWithScores("dst".getBytes(Protocol.UTF8), 0, 100)));
assertTrue(JedisTest.isSetAreEquals(bexpected, jedis.zrangeWithScores("dst".getBytes(Protocol.UTF8), 0, 100)));
}
@@ -720,7 +720,7 @@ public class SortedSetCommandsTest extends JedisCommandTestBase {
Set<Tuple> bexpected = new LinkedHashSet<Tuple>();
bexpected.add(new Tuple(ba, new Double(6)));
assertTrue(JedisTest.isListAreEquals(bexpected, jedis.zrangeWithScores("dst".getBytes(Protocol.UTF8), 0, 100)));
assertTrue(JedisTest.isSetAreEquals(bexpected, jedis.zrangeWithScores("dst".getBytes(Protocol.UTF8), 0, 100)));
}
}