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 d9126c5..f5c2c2e 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/SetCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/SetCommandsTest.java @@ -1,11 +1,24 @@ package redis.clients.jedis.tests.commands; +import java.util.Arrays; import java.util.LinkedHashSet; import java.util.Set; import org.junit.Test; +import redis.clients.jedis.tests.JedisTest; + public class SetCommandsTest extends JedisCommandTestBase { + final byte[] bfoo = {0x01, 0x02, 0x03, 0x04}; + final byte[] bbar = {0x05, 0x06, 0x07, 0x08}; + final byte[] bcar = {0x09, 0x0A, 0x0B, 0x0C}; + final byte[] ba = {0x0A}; + final byte[] bb = {0x0B}; + final byte[] bc = {0x0C}; + final byte[] bd = {0x0D}; + final byte[] bx = {0x42}; + + @Test public void sadd() { int status = jedis.sadd("foo", "a"); @@ -13,6 +26,13 @@ public class SetCommandsTest extends JedisCommandTestBase { status = jedis.sadd("foo", "a"); assertEquals(0, status); + + int bstatus = jedis.sadd(bfoo, ba); + assertEquals(1, bstatus); + + bstatus = jedis.sadd(bfoo, ba); + assertEquals(0, bstatus); + } @Test @@ -27,7 +47,20 @@ public class SetCommandsTest extends JedisCommandTestBase { Set members = jedis.smembers("foo"); assertEquals(expected, members); + + //Binary + jedis.sadd(bfoo, ba); + jedis.sadd(bfoo, bb); + + Set bexpected = new LinkedHashSet(); + bexpected.add(ba); + bexpected.add(bb); + + Set bmembers = jedis.smembers(bfoo); + + assertTrue(JedisTest.isListAreEquals(bexpected, bmembers)); } + @Test public void srem() { @@ -45,6 +78,24 @@ public class SetCommandsTest extends JedisCommandTestBase { status = jedis.srem("foo", "bar"); assertEquals(0, status); + + //Binary + + jedis.sadd(bfoo, ba); + jedis.sadd(bfoo, bb); + + int bstatus = jedis.srem(bfoo, ba); + + Set bexpected = new LinkedHashSet(); + bexpected.add(bb); + + assertEquals(1, bstatus); + assertTrue(JedisTest.isListAreEquals(bexpected, jedis.smembers(bfoo))); + + bstatus = jedis.srem(bfoo, bbar); + + assertEquals(0, bstatus); + } @Test @@ -59,6 +110,19 @@ public class SetCommandsTest extends JedisCommandTestBase { member = jedis.spop("bar"); assertNull(member); + + //Binary + jedis.sadd(bfoo, ba); + jedis.sadd(bfoo, bb); + + byte[] bmember = jedis.spop(bfoo); + + assertTrue(Arrays.equals(ba, bmember) || Arrays.equals(bb,bmember)); + assertEquals(1, jedis.smembers(bfoo).size()); + + bmember = jedis.spop(bbar); + assertNull(bmember); + } @Test @@ -81,8 +145,32 @@ public class SetCommandsTest extends JedisCommandTestBase { assertEquals(expectedSrc, jedis.smembers("foo")); assertEquals(expectedDst, jedis.smembers("bar")); - status = jedis.smove("foo", "bar", "a"); + status = jedis.smove("foo", "bar", "a"); final byte[] bD = {0x0D}; + assertEquals(status, 0); + + //Binary + jedis.sadd(bfoo, ba); + jedis.sadd(bfoo, bb); + + jedis.sadd(bbar, bc); + + int bstatus = jedis.smove(bfoo, bbar, ba); + + Set bexpectedSrc = new LinkedHashSet(); + bexpectedSrc.add(bb); + + Set bexpectedDst = new LinkedHashSet(); + bexpectedDst.add(bc); + bexpectedDst.add(ba); + + assertEquals(bstatus, 1); + assertTrue(JedisTest.isListAreEquals(bexpectedSrc, jedis.smembers(bfoo))); + assertTrue(JedisTest.isListAreEquals(bexpectedDst, jedis.smembers(bbar))); + + bstatus = jedis.smove(bfoo, bbar, ba); + assertEquals(bstatus, 0); + } @Test @@ -96,6 +184,18 @@ public class SetCommandsTest extends JedisCommandTestBase { card = jedis.scard("bar"); assertEquals(0, card); + + //Binary + jedis.sadd(bfoo, ba); + jedis.sadd(bfoo, bb); + + int bcard = jedis.scard(bfoo); + + assertEquals(2, bcard); + + bcard = jedis.scard(bbar); + assertEquals(0, bcard); + } @Test @@ -108,6 +208,17 @@ public class SetCommandsTest extends JedisCommandTestBase { status = jedis.sismember("foo", "c"); assertEquals(0, status); + + //Binary + jedis.sadd(bfoo, ba); + jedis.sadd(bfoo, bb); + + int bstatus = jedis.sismember(bfoo, ba); + assertEquals(1, bstatus); + + bstatus = jedis.sismember(bfoo, bc); + assertEquals(0, bstatus); + } @Test @@ -123,6 +234,20 @@ public class SetCommandsTest extends JedisCommandTestBase { Set intersection = jedis.sinter("foo", "bar"); assertEquals(expected, intersection); + + //Binary + jedis.sadd(bfoo, ba); + jedis.sadd(bfoo, bb); + + jedis.sadd(bbar, bb); + jedis.sadd(bbar, bc); + + Set bexpected = new LinkedHashSet(); + bexpected.add(bb); + + Set bintersection = jedis.sinter(bfoo, bbar); + assertTrue(JedisTest.isListAreEquals(bexpected, bintersection)); + } @Test @@ -140,6 +265,22 @@ public class SetCommandsTest extends JedisCommandTestBase { assertEquals(1, status); assertEquals(expected, jedis.smembers("car")); + + //Binary + jedis.sadd(bfoo, ba); + jedis.sadd(bfoo, bb); + + jedis.sadd(bbar, bb); + jedis.sadd(bbar, bc); + + Set bexpected = new LinkedHashSet(); + bexpected.add(bb); + + int bstatus = jedis.sinterstore(bcar, bfoo, bbar); + assertEquals(1, bstatus); + + assertTrue(JedisTest.isListAreEquals(bexpected, jedis.smembers(bcar))); + } @Test @@ -157,6 +298,22 @@ public class SetCommandsTest extends JedisCommandTestBase { Set union = jedis.sunion("foo", "bar"); assertEquals(expected, union); + + //Binary + jedis.sadd(bfoo, ba); + jedis.sadd(bfoo, bb); + + jedis.sadd(bbar, bb); + jedis.sadd(bbar, bc); + + Set bexpected = new LinkedHashSet(); + bexpected.add(ba); + bexpected.add(bb); + bexpected.add(bc); + + Set bunion = jedis.sunion(bfoo, bbar); + assertTrue(JedisTest.isListAreEquals(bexpected, bunion)); + } @Test @@ -176,6 +333,24 @@ public class SetCommandsTest extends JedisCommandTestBase { assertEquals(3, status); assertEquals(expected, jedis.smembers("car")); + + //Binary + jedis.sadd(bfoo, ba); + jedis.sadd(bfoo, bb); + + jedis.sadd(bbar, bb); + jedis.sadd(bbar, bc); + + Set bexpected = new LinkedHashSet(); + bexpected.add(ba); + bexpected.add(bb); + bexpected.add(bc); + + int bstatus = jedis.sunionstore(bcar, bfoo, bbar); + assertEquals(3, bstatus); + + assertTrue(JedisTest.isListAreEquals(bexpected, jedis.smembers(bcar))); + } @Test @@ -196,6 +371,25 @@ public class SetCommandsTest extends JedisCommandTestBase { Set diff = jedis.sdiff("foo", "bar", "car"); assertEquals(expected, diff); + + //Binary + jedis.sadd(bfoo, bx); + jedis.sadd(bfoo, ba); + jedis.sadd(bfoo, bb); + jedis.sadd(bfoo, bc); + + jedis.sadd(bbar, bc); + + jedis.sadd(bcar, ba); + jedis.sadd(bcar, bd); + + Set bexpected = new LinkedHashSet(); + bexpected.add(bx); + bexpected.add(bb); + + Set bdiff = jedis.sdiff(bfoo, bbar, bcar); + assertTrue(JedisTest.isListAreEquals(bexpected, bdiff)); + } @Test @@ -217,6 +411,26 @@ public class SetCommandsTest extends JedisCommandTestBase { int status = jedis.sdiffstore("tar", "foo", "bar", "car"); assertEquals(2, status); assertEquals(expected, jedis.smembers("car")); + + //Binary + jedis.sadd(bfoo, bx); + jedis.sadd(bfoo, ba); + jedis.sadd(bfoo, bb); + jedis.sadd(bfoo, bc); + + jedis.sadd(bbar, bc); + + jedis.sadd(bcar, ba); + jedis.sadd(bcar, bd); + + Set bexpected = new LinkedHashSet(); + bexpected.add(bd); + bexpected.add(ba); + + int bstatus = jedis.sdiffstore("tar".getBytes(), bfoo, bbar, bcar); + assertEquals(2, bstatus); + assertTrue(JedisTest.isListAreEquals(bexpected, jedis.smembers(bcar))); + } @Test @@ -231,6 +445,19 @@ public class SetCommandsTest extends JedisCommandTestBase { member = jedis.srandmember("bar"); assertNull(member); + + //Binary + jedis.sadd(bfoo, ba); + jedis.sadd(bfoo, bb); + + byte[] bmember = jedis.srandmember(bfoo); + + assertTrue(Arrays.equals(ba, bmember) || Arrays.equals(bb, bmember)); + assertEquals(2, jedis.smembers(bfoo).size()); + + bmember = jedis.srandmember(bbar); + assertNull(bmember); + } } \ No newline at end of file