From 3281bafd2e292591646022b2bb9e328352fd8790 Mon Sep 17 00:00:00 2001 From: Yaourt Date: Sun, 7 Nov 2010 10:49:45 +0100 Subject: [PATCH] Fix wrong test on lists / sets. Lists comparison now take care of the order, which is not the case for Sets. --- .../redis/clients/jedis/tests/JedisTest.java | 66 +++++++++++++++++-- .../commands/AllKindOfValuesCommandsTest.java | 28 ++++---- .../tests/commands/HashesCommandsTest.java | 14 ++-- .../jedis/tests/commands/SetCommandsTest.java | 20 +++--- .../tests/commands/SortedSetCommandsTest.java | 46 ++++++------- 5 files changed, 118 insertions(+), 56 deletions(-) diff --git a/src/test/java/redis/clients/jedis/tests/JedisTest.java b/src/test/java/redis/clients/jedis/tests/JedisTest.java index 57db5b3..f968b0c 100644 --- a/src/test/java/redis/clients/jedis/tests/JedisTest.java +++ b/src/test/java/redis/clients/jedis/tests/JedisTest.java @@ -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; // } diff --git a/src/test/java/redis/clients/jedis/tests/commands/AllKindOfValuesCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/AllKindOfValuesCommandsTest.java index 2fc058c..bc2a941 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/AllKindOfValuesCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/AllKindOfValuesCommandsTest.java @@ -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 keys = jedis.keys("foo*"); - List expected = new ArrayList(); + Set keys = jedis.keys("foo*"); + Set expected = new HashSet(); expected.add("foo"); expected.add("foobar"); assertEquals(expected, keys); - expected = new ArrayList(); + expected = new HashSet(); 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 bkeys = jedis.keys(bfoostar); - List bexpected = new ArrayList(); +// byte[] bfoostar = new byte[bfoo.length+1]; +// System.arraycopy(bfoo, 0, bfoostar, 0, bfoo.length); +// bfoostar[bfoostar.length-1] = '*'; + Set bkeys = jedis.keys(bfoostar); + Set bexpected = new HashSet(); bexpected.add(bfoo); bexpected.add(bfoobar); - assertTrue(JedisTest.isListAreEquals(bexpected, bkeys)); + assertTrue(JedisTest.isSetAreEquals(bexpected, bkeys)); // assertEquals(expected, keys); - expected = new ArrayList(); - keys = jedis.keys("bar*"); + bexpected = new HashSet(); + bkeys = jedis.keys(bbarstar); - assertEquals(expected, keys); + assertTrue(JedisTest.isSetAreEquals(bexpected, bkeys)); } diff --git a/src/test/java/redis/clients/jedis/tests/commands/HashesCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/HashesCommandsTest.java index 9dd3a72..0dd6dda 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/HashesCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/HashesCommandsTest.java @@ -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 bexpected = new HashMap(); bexpected.put(bbar, bcar); bexpected.put(bcar, bbar); - final Collection keysetExpected = bexpected.keySet(); - final Collection keysetResult = bhash.keySet(); - assertTrue(JedisTest.isListAreEquals(keysetExpected, keysetResult)); - final Collection valsExpected = bexpected.values(); - final Collection valsResult = bhash.values(); - assertTrue(JedisTest.isListAreEquals(valsExpected, valsResult)); + final Set keysetExpected = bexpected.keySet(); + final Set keysetResult = bhash.keySet(); + assertTrue(JedisTest.isSetAreEquals(keysetExpected, keysetResult)); + final Set valsExpected = new HashSet(bexpected.values()); + final Set valsResult = new HashSet(bhash.values()); + assertTrue(JedisTest.isSetAreEquals(valsExpected, valsResult)); } } diff --git a/src/test/java/redis/clients/jedis/tests/commands/SetCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/SetCommandsTest.java index 9d41a9d..23d6f39 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/SetCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/SetCommandsTest.java @@ -58,7 +58,7 @@ public class SetCommandsTest extends JedisCommandTestBase { Set 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 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 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 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))); } diff --git a/src/test/java/redis/clients/jedis/tests/commands/SortedSetCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/SortedSetCommandsTest.java index 6a6b0c5..a56f220 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/SortedSetCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/SortedSetCommandsTest.java @@ -76,11 +76,11 @@ public class SortedSetCommandsTest extends JedisCommandTestBase { bexpected.add(ba); Set 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 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 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 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(); bexpected.add(bc); - assertTrue(JedisTest.isListAreEquals(bexpected, brange)); + assertTrue(JedisTest.isSetAreEquals(bexpected, brange)); brange = jedis.zrangeByScore(bfoo, 0d, 2d, 1, 1); Set 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(); 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(); 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(); 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 bexpected = new LinkedHashSet(); 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 bexpected = new LinkedHashSet(); 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 bexpected = new LinkedHashSet(); 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))); } } \ No newline at end of file