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.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import javax.swing.tree.ExpandVetoException; import javax.swing.tree.ExpandVetoException;
@@ -49,7 +50,7 @@ public class JedisTest extends JedisCommandTestBase {
} }
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
public static boolean isListAreEquals(Collection expected, Collection result) { public static boolean isSetAreEquals(Set expected, Set result) {
if(expected.size() != result.size()) { if(expected.size() != result.size()) {
return false; return false;
} }
@@ -67,9 +68,15 @@ public class JedisTest extends JedisCommandTestBase {
if(Arrays.equals(bexp, bresp)) { if(Arrays.equals(bexp, bresp)) {
found = true; found = true;
} }
} else if (exp instanceof Collection && resp instanceof Collection) { } else if (exp instanceof Set && resp instanceof Set) {
final Collection subexp = (Collection) exp; final Set subexp = (Set) exp;
final Collection subresp = (Collection) resp; 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)) { if(isListAreEquals(subexp, subresp)) {
found = true; found = true;
} }
@@ -93,7 +100,56 @@ public class JedisTest extends JedisCommandTestBase {
return true; 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) { // if(expected.length != result.length) {
// return false; // return false;
// } // }

View File

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

View File

@@ -58,7 +58,7 @@ public class SetCommandsTest extends JedisCommandTestBase {
Set<byte[]> bmembers = jedis.smembers(bfoo); 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); bexpected.add(bb);
assertEquals(1, bstatus); assertEquals(1, bstatus);
assertTrue(JedisTest.isListAreEquals(bexpected, jedis.smembers(bfoo))); assertTrue(JedisTest.isSetAreEquals(bexpected, jedis.smembers(bfoo)));
bstatus = jedis.srem(bfoo, bbar); bstatus = jedis.srem(bfoo, bbar);
@@ -165,8 +165,8 @@ public class SetCommandsTest extends JedisCommandTestBase {
bexpectedDst.add(ba); bexpectedDst.add(ba);
assertEquals(bstatus, 1); assertEquals(bstatus, 1);
assertTrue(JedisTest.isListAreEquals(bexpectedSrc, jedis.smembers(bfoo))); assertTrue(JedisTest.isSetAreEquals(bexpectedSrc, jedis.smembers(bfoo)));
assertTrue(JedisTest.isListAreEquals(bexpectedDst, jedis.smembers(bbar))); assertTrue(JedisTest.isSetAreEquals(bexpectedDst, jedis.smembers(bbar)));
bstatus = jedis.smove(bfoo, bbar, ba); bstatus = jedis.smove(bfoo, bbar, ba);
assertEquals(bstatus, 0); assertEquals(bstatus, 0);
@@ -246,7 +246,7 @@ public class SetCommandsTest extends JedisCommandTestBase {
bexpected.add(bb); bexpected.add(bb);
Set<byte[]> bintersection = jedis.sinter(bfoo, bbar); 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); int bstatus = jedis.sinterstore(bcar, bfoo, bbar);
assertEquals(1, bstatus); 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); bexpected.add(bc);
Set<byte[]> bunion = jedis.sunion(bfoo, bbar); 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); int bstatus = jedis.sunionstore(bcar, bfoo, bbar);
assertEquals(3, bstatus); 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); bexpected.add(bb);
Set<byte[]> bdiff = jedis.sdiff(bfoo, bbar, bcar); 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); int bstatus = jedis.sdiffstore("tar".getBytes(), bfoo, bbar, bcar);
assertEquals(2, bstatus); 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); bexpected.add(ba);
Set<byte[]> brange = jedis.zrange(bfoo, 0, 1); Set<byte[]> brange = jedis.zrange(bfoo, 0, 1);
assertTrue(JedisTest.isListAreEquals(bexpected, brange)); assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
bexpected.add(bb); bexpected.add(bb);
brange = jedis.zrange(bfoo, 0, 100); 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); bexpected.add(ba);
Set<byte[]> brange = jedis.zrevrange(bfoo, 0, 1); Set<byte[]> brange = jedis.zrevrange(bfoo, 0, 1);
assertTrue(JedisTest.isListAreEquals(bexpected, brange)); assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
bexpected.add(bc); bexpected.add(bc);
brange = jedis.zrevrange(bfoo, 0, 100); 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); bexpected.add(bb);
assertEquals(1, bstatus); 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); bstatus = jedis.zrem(bfoo, bbar);
@@ -181,7 +181,7 @@ public class SortedSetCommandsTest extends JedisCommandTestBase {
bexpected.add(bb); bexpected.add(bb);
assertEquals(3d, bscore, 0); 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)); bexpected.add(new Tuple(ba, 2d));
Set<Tuple> brange = jedis.zrangeWithScores(bfoo, 0, 1); Set<Tuple> brange = jedis.zrangeWithScores(bfoo, 0, 1);
assertTrue(JedisTest.isListAreEquals(bexpected, brange)); assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
bexpected.add(new Tuple(bb, 10d)); bexpected.add(new Tuple(bb, 10d));
brange = jedis.zrangeWithScores(bfoo, 0, 100); 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)); bexpected.add(new Tuple(ba, 2d));
Set<Tuple> brange = jedis.zrevrangeWithScores(bfoo, 0, 1); 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)); bexpected.add(new Tuple(bc, 0.1d));
brange = jedis.zrevrangeWithScores(bfoo, 0, 100); 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(bc);
bexpected.add(ba); bexpected.add(ba);
assertTrue(JedisTest.isListAreEquals(bexpected, brange)); assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
brange = jedis.zrangeByScore(bfoo, 0d, 2d, 0, 1); brange = jedis.zrangeByScore(bfoo, 0d, 2d, 0, 1);
bexpected = new LinkedHashSet<byte[]>(); bexpected = new LinkedHashSet<byte[]>();
bexpected.add(bc); bexpected.add(bc);
assertTrue(JedisTest.isListAreEquals(bexpected, brange)); assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
brange = jedis.zrangeByScore(bfoo, 0d, 2d, 1, 1); brange = jedis.zrangeByScore(bfoo, 0d, 2d, 1, 1);
Set<byte[]> brange2 = jedis.zrangeByScore(bfoo, "-inf".getBytes(Protocol.UTF8), "(2".getBytes(Protocol.UTF8)); 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 = new LinkedHashSet<byte[]>();
bexpected.add(ba); 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(bc, 0.1d));
bexpected.add(new Tuple(ba, 2d)); bexpected.add(new Tuple(ba, 2d));
assertTrue(JedisTest.isListAreEquals(bexpected, brange)); assertTrue(JedisTest.isSetAreEquals(bexpected, brange));
brange = jedis.zrangeByScoreWithScores(bfoo, 0d, 2d, 0, 1); brange = jedis.zrangeByScoreWithScores(bfoo, 0d, 2d, 0, 1);
bexpected = new LinkedHashSet<Tuple>(); bexpected = new LinkedHashSet<Tuple>();
bexpected.add(new Tuple(bc, 0.1d)); 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); brange = jedis.zrangeByScoreWithScores(bfoo, 0d, 2d, 1, 1);
bexpected = new LinkedHashSet<Tuple>(); bexpected = new LinkedHashSet<Tuple>();
bexpected.add(new Tuple(ba, 2d)); 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(ba);
bexpected.add(bb); 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[]>(); Set<byte[]> bexpected = new LinkedHashSet<byte[]>();
bexpected.add(bb); 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(bb, new Double(4)));
bexpected.add(new Tuple(ba, new Double(3))); 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(bb, new Double(8)));
bexpected.add(new Tuple(ba, new Double(6))); 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>(); Set<Tuple> bexpected = new LinkedHashSet<Tuple>();
bexpected.add(new Tuple(ba, new Double(3))); 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>(); Set<Tuple> bexpected = new LinkedHashSet<Tuple>();
bexpected.add(new Tuple(ba, new Double(6))); 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)));
} }
} }