// Copyright (C) 2011 - Will Glozer. All rights reserved. package com.lambdaworks.redis; import java.util.Set; import org.junit.Test; import static org.junit.Assert.*; public class SetCommandTest extends AbstractCommandTest { @Test public void sadd() throws Exception { assertEquals(1, (long) redis.sadd(key, "a")); assertEquals(0, (long) redis.sadd(key, "a")); assertEquals(set("a"), redis.smembers(key)); assertEquals(2, (long) redis.sadd(key, "b", "c")); assertEquals(set("a", "b", "c"), redis.smembers(key)); } @Test public void scard() throws Exception { assertEquals(0, (long) redis.scard(key)); redis.sadd(key, "a"); assertEquals(1, (long) redis.scard(key)); } @Test public void sdiff() throws Exception { redis.sadd("key1", "a", "b", "c", "d"); redis.sadd("key2", "c"); redis.sadd("key3", "a", "c", "e"); assertEquals(set("b", "d"), redis.sdiff("key1", "key2", "key3")); } @Test public void sdiffstore() throws Exception { redis.sadd("key1", "a", "b", "c", "d"); redis.sadd("key2", "c"); redis.sadd("key3", "a", "c", "e"); assertEquals(2, (long) redis.sdiffstore("newset", "key1", "key2", "key3")); assertEquals(set("b", "d"), redis.smembers("newset")); } @Test public void sinter() throws Exception { redis.sadd("key1", "a", "b", "c", "d"); redis.sadd("key2", "c"); redis.sadd("key3", "a", "c", "e"); assertEquals(set("c"), redis.sinter("key1", "key2", "key3")); } @Test public void sinterstore() throws Exception { redis.sadd("key1", "a", "b", "c", "d"); redis.sadd("key2", "c"); redis.sadd("key3", "a", "c", "e"); assertEquals(1, (long) redis.sinterstore("newset", "key1", "key2", "key3")); assertEquals(set("c"), redis.smembers("newset")); } @Test public void sismember() throws Exception { assertFalse(redis.sismember(key, "a")); redis.sadd(key, "a"); assertTrue(redis.sismember(key, "a")); } @Test public void smove() throws Exception { redis.sadd(key, "a", "b", "c"); assertFalse(redis.smove(key, "key1", "d")); assertTrue(redis.smove(key, "key1", "a")); assertEquals(set("b", "c"), redis.smembers(key)); assertEquals(set("a"), redis.smembers("key1")); } @Test public void smembers() throws Exception { redis.sadd(key, "a"); redis.sadd(key, "b"); assertTrue(set("a", "b").equals(redis.smembers(key))); } @Test public void spop() throws Exception { assertNull(redis.spop(key)); redis.sadd(key, "a", "b", "c"); String rand = redis.spop(key); assertTrue(set("a", "b", "c").contains(rand)); assertFalse(redis.smembers(key).contains(rand)); } @Test public void srandmember() throws Exception { assertNull(redis.spop(key)); redis.sadd(key, "a", "b", "c", "d"); assertTrue(set("a", "b", "c", "d").contains(redis.srandmember(key))); assertEquals(set("a", "b", "c", "d"), redis.smembers(key)); Set<String> rand = redis.srandmember(key, 3); assertEquals(3, rand.size()); assertTrue(set("a", "b", "c", "d").containsAll(rand)); } @Test public void srem() throws Exception { redis.sadd(key, "a", "b", "c"); assertEquals(0, (long) redis.srem(key, "d")); assertEquals(1, (long) redis.srem(key, "b")); assertEquals(set("a", "c"), redis.smembers(key)); assertEquals(2, (long) redis.srem(key, "a", "c")); assertEquals(set(), redis.smembers(key)); } @Test public void sunion() throws Exception { redis.sadd("key1", "a", "b", "c", "d"); redis.sadd("key2", "c"); redis.sadd("key3", "a", "c", "e"); assertEquals(set("a", "b", "c", "d", "e"), redis.sunion("key1", "key2", "key3")); } @Test public void sunionstore() throws Exception { redis.sadd("key1", "a", "b", "c", "d"); redis.sadd("key2", "c"); redis.sadd("key3", "a", "c", "e"); assertEquals(5, (long) redis.sunionstore("newset", "key1", "key2", "key3")); assertEquals(set("a", "b", "c", "d", "e"), redis.smembers("newset")); } }