Binary U test on Hashes ...

This commit is contained in:
Yaourt
2010-11-05 16:09:32 +01:00
parent c62a6762be
commit 7d58a68d2d
2 changed files with 157 additions and 9 deletions

View File

@@ -1,6 +1,7 @@
package redis.clients.jedis.tests;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -48,7 +49,7 @@ public class JedisTest extends JedisCommandTestBase {
}
@SuppressWarnings("rawtypes")
public static boolean isListAreEquals(List expected, List result) {
public static boolean isListAreEquals(Collection expected, Collection result) {
if(expected.size() != result.size()) {
return false;
}
@@ -66,20 +67,26 @@ public class JedisTest extends JedisCommandTestBase {
if(Arrays.equals(bexp, bresp)) {
found = true;
}
} else if (exp instanceof List && resp instanceof List) {
final List subexp = (List) exp;
final List subresp = (List) resp;
} else if (exp instanceof Collection && resp instanceof Collection) {
final Collection subexp = (Collection) exp;
final Collection subresp = (Collection) resp;
if(isListAreEquals(subexp, subresp)) {
found = true;
}
} else {
if (exp.equals(resp)){
found = true;
if (null != exp) {
if (exp.equals(resp)){
found = true;
}
} else {
if(resp == null) {
found = true;
}
}
}
}
if(!found){
fail("Result doesn't contain " + exp.toString());
fail("Result doesn't contain " + (null != exp ? exp.toString() : null));
}
}

View File

@@ -1,6 +1,7 @@
package redis.clients.jedis.tests.commands;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
@@ -11,12 +12,22 @@ import org.junit.Test;
import redis.clients.jedis.tests.JedisTest;
public class HashesCommandsTest extends JedisCommandTestBase {
final byte[] bfoo = {0x01, 0x02, 0x03, 0x04};
final byte[] bbar = {0x05, 0x06, 0x07, 0x08};
final byte[] bcar = {0x09, 0x0A, 0x0B, 0x0C};
@Test
public void hset() {
int status = jedis.hset("foo", "bar", "car");
assertEquals(1, status);
status = jedis.hset("foo", "bar", "foo");
assertEquals(0, status);
//Binary
int bstatus = jedis.hset(bfoo, bbar, bcar);
assertEquals(1, bstatus);
bstatus = jedis.hset(bfoo, bbar, bfoo);
assertEquals(0, bstatus);
}
@Test
@@ -25,6 +36,12 @@ public class HashesCommandsTest extends JedisCommandTestBase {
assertEquals(null, jedis.hget("bar", "foo"));
assertEquals(null, jedis.hget("foo", "car"));
assertEquals("car", jedis.hget("foo", "bar"));
//Binary
jedis.hset(bfoo, bbar, bcar);
assertEquals(null, jedis.hget(bbar, bfoo));
assertEquals(null, jedis.hget(bfoo, bcar));
assertArrayEquals(bcar, jedis.hget(bfoo, bbar));
}
@Test
@@ -40,6 +57,20 @@ public class HashesCommandsTest extends JedisCommandTestBase {
status = jedis.hsetnx("foo", "car", "bar");
assertEquals(1, status);
assertEquals("bar", jedis.hget("foo", "car"));
//Binary
int bstatus = jedis.hsetnx(bfoo, bbar, bcar);
assertEquals(1, bstatus);
assertArrayEquals(bcar, jedis.hget(bfoo, bbar));
bstatus = jedis.hsetnx(bfoo, bbar, bfoo);
assertEquals(0, bstatus);
assertArrayEquals(bcar, jedis.hget(bfoo, bbar));
bstatus = jedis.hsetnx(bfoo, bcar, bbar);
assertEquals(1, bstatus);
assertArrayEquals(bbar, jedis.hget(bfoo, bcar));
}
@Test
@@ -51,7 +82,18 @@ public class HashesCommandsTest extends JedisCommandTestBase {
assertEquals("OK", status);
assertEquals("car", jedis.hget("foo", "bar"));
assertEquals("bar", jedis.hget("foo", "car"));
//Binary
Map<byte[], byte[]> bhash = new HashMap<byte[], byte[]>();
bhash.put(bbar, bcar);
bhash.put(bcar, bbar);
String bstatus = jedis.hmset(bfoo, bhash);
assertEquals("OK", bstatus);
assertArrayEquals(bcar, jedis.hget(bfoo, bbar));
assertArrayEquals(bbar, jedis.hget(bfoo, bcar));
}
@Test
public void hmget() {
@@ -67,6 +109,20 @@ public class HashesCommandsTest extends JedisCommandTestBase {
expected.add(null);
assertEquals(expected, values);
//Binary
Map<byte[], byte[]> bhash = new HashMap<byte[], byte[]>();
bhash.put(bbar, bcar);
bhash.put(bcar, bbar);
jedis.hmset(bfoo, bhash);
List<byte[]> bvalues = jedis.hmget(bfoo, bbar, bcar, bfoo);
List<byte[]> bexpected = new ArrayList<byte[]>();
bexpected.add(bcar);
bexpected.add(bbar);
bexpected.add(null);
JedisTest.isListAreEquals(bexpected, bvalues);
}
@Test
@@ -77,6 +133,15 @@ public class HashesCommandsTest extends JedisCommandTestBase {
assertEquals(0, value);
value = jedis.hincrBy("foo", "bar", -10);
assertEquals(-10, value);
//Binary
int bvalue = jedis.hincrBy(bfoo, bbar, 1);
assertEquals(1, bvalue);
bvalue = jedis.hincrBy(bfoo, bbar, -1);
assertEquals(0, bvalue);
bvalue = jedis.hincrBy(bfoo, bbar, -10);
assertEquals(-10, bvalue);
}
@Test
@@ -89,6 +154,17 @@ public class HashesCommandsTest extends JedisCommandTestBase {
assertEquals(0, jedis.hexists("bar", "foo").intValue());
assertEquals(0, jedis.hexists("foo", "foo").intValue());
assertEquals(1, jedis.hexists("foo", "bar").intValue());
//Binary
Map<byte[], byte[]> bhash = new HashMap<byte[], byte[]>();
bhash.put(bbar, bcar);
bhash.put(bcar, bbar);
jedis.hmset(bfoo, bhash);
assertEquals(0, jedis.hexists(bbar, bfoo).intValue());
assertEquals(0, jedis.hexists(bfoo, bfoo).intValue());
assertEquals(1, jedis.hexists(bfoo, bbar).intValue());
}
@Test
@@ -102,6 +178,18 @@ public class HashesCommandsTest extends JedisCommandTestBase {
assertEquals(0, jedis.hdel("foo", "foo").intValue());
assertEquals(1, jedis.hdel("foo", "bar").intValue());
assertEquals(null, jedis.hget("foo", "bar"));
//Binary
Map<byte[], byte[]> bhash = new HashMap<byte[], byte[]>();
bhash.put(bbar, bcar);
bhash.put(bcar, bbar);
jedis.hmset(bfoo, bhash);
assertEquals(0, jedis.hdel(bbar, bfoo).intValue());
assertEquals(0, jedis.hdel(bfoo, bfoo).intValue());
assertEquals(1, jedis.hdel(bfoo, bbar).intValue());
assertEquals(null, jedis.hget(bfoo, bbar));
}
@Test
@@ -113,6 +201,16 @@ public class HashesCommandsTest extends JedisCommandTestBase {
assertEquals(0, jedis.hlen("bar").intValue());
assertEquals(2, jedis.hlen("foo").intValue());
//Binary
Map<byte[], byte[]> bhash = new HashMap<byte[], byte[]>();
bhash.put(bbar, bcar);
bhash.put(bcar, bbar);
jedis.hmset(bfoo, bhash);
assertEquals(0, jedis.hlen(bbar).intValue());
assertEquals(2, jedis.hlen(bfoo).intValue());
}
@Test
@@ -127,7 +225,19 @@ public class HashesCommandsTest extends JedisCommandTestBase {
expected.add("bar");
expected.add("car");
assertTrue(JedisTest.isListAreEquals(expected, keys));
// assertEquals(expected, keys);
//Binary
Map<byte[], byte[]> bhash = new LinkedHashMap<byte[], byte[]>();
bhash.put(bbar, bcar);
bhash.put(bcar, bbar);
jedis.hmset(bfoo, bhash);
List<byte[]> bkeys = jedis.hkeys(bfoo);
List<byte[]> bexpected = new ArrayList<byte[]>();
bexpected.add(bbar);
bexpected.add(bcar);
assertTrue(JedisTest.isListAreEquals(bexpected, bkeys));
}
@Test
@@ -142,7 +252,20 @@ public class HashesCommandsTest extends JedisCommandTestBase {
expected.add("car");
expected.add("bar");
assertTrue(JedisTest.isListAreEquals(expected, vals));
// assertEquals(expected, vals);
//Binary
Map<byte[], byte[]> bhash = new LinkedHashMap<byte[], byte[]>();
bhash.put(bbar, bcar);
bhash.put(bcar, bbar);
jedis.hmset(bfoo, bhash);
List<byte[]> bvals = jedis.hvals(bfoo);
List<byte[]> bexpected = new ArrayList<byte[]>();
bexpected.add(bcar);
bexpected.add(bbar);
assertTrue(JedisTest.isListAreEquals(bexpected, bvals));
}
@Test
@@ -157,5 +280,23 @@ public class HashesCommandsTest extends JedisCommandTestBase {
expected.put("bar", "car");
expected.put("car", "bar");
assertEquals(expected, hash);
//Binary
Map<byte[], byte[]> bh = new HashMap<byte[], byte[]>();
bh.put(bbar, bcar);
bh.put(bcar, bbar);
jedis.hmset(bfoo, bh);
Map<byte[], byte[]> bhash = jedis.hgetAll(bfoo);
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));
}
}