4 import org.specs.mock.Mockito
5 import org.mockito.Mock._
6 import org.mockito.Mockito._
7 import org.mockito.Mockito.doNothing
9 object SetOperationsSpec extends Specification with Mockito {
11 "Redis Client Set Operations" should {
12 var client: RedisTestClient = null
13 var connection: Connection = null
16 connection = mock[Connection]
17 client = new RedisTestClient(connection)
20 "add a member to a set" in {
21 connection.readBoolean returns true
22 client.setAdd("set", "value") must beTrue
23 connection.write("SADD set 5\r\nvalue\r\n") was called
26 "remove an member from a set" in {
27 connection.readBoolean returns true
28 client.setDelete("set", "value") must beTrue
29 connection.write("SREM set 5\r\nvalue\r\n") was called
32 "return the number of elements in the set" in {
33 connection.readInt returns 5
34 client.setCount("set") mustEqual 5
35 connection.write("SCARD set\r\n") was called
38 "return all the members from a set" in {
39 val setResult = Set("one", "two", "three")
40 connection.readSet returns setResult
41 client.setMembers("set") mustEqual setResult
42 connection.write("SMEMBERS set\r\n") was called
45 "pop an element from the set" in {
46 connection.readString returns "one"
47 client.setPop("set") mustEqual "one"
48 connection.write("SPOP set\r\n") was called
51 "move an element from one set to another" in {
52 connection.readBoolean returns true
53 client.setMove("set", "toset", "value") mustEqual true
54 connection.write("SMOVE set toset value\r\n") was called
57 "tell if member exists on the set" in {
58 connection.readBoolean returns true
59 client.setMemberExists("set", "value") mustEqual true
60 connection.write("SISMEMBER set 5\r\nvalue\r\n") was called
63 "return the intersection between N sets" in {
64 val setResult = Set("one", "two", "three")
65 connection.readSet returns setResult
66 client.setIntersect("set", "otherset", "another") mustEqual setResult
67 connection.write("SINTER set otherset another\r\n") was called
70 "return the intersection between N sets and store it a new one" in {
71 connection.readBoolean returns true
72 client.setInterStore("set", "oneset", "twoset") mustEqual true
73 connection.write("SINTERSTORE set oneset twoset\r\n") was called
76 "return the difference between N sets" in {
77 val setResult = Set("one", "two", "three")
78 connection.readSet returns setResult
79 client.setDiff("set", "oneset", "twoset") mustEqual setResult
80 connection.write("SDIFF set oneset twoset\r\n") was called
83 "return the difference between N sets and store it in a new one" in {
84 connection.readBoolean returns true
85 client.setDiffStore("newset", "oneset", "twoset") mustEqual true
86 connection.write("SDIFFSTORE newset oneset twoset\r\n") was called
89 "return the union between N sets" in {
90 val setResult = Set("one", "two", "three")
91 connection.readSet returns setResult
92 client.setUnion("set", "oneset", "twoset") mustEqual setResult
93 connection.write("SUNION set oneset twoset\r\n") was called
96 "return the union between N sets and store it in a new one" in {
97 connection.readBoolean returns true
98 client.setUnionStore("set", "oneset", "twoset") mustEqual true
99 connection.write("SUNIONSTORE set oneset twoset\r\n") was called