]> gitweb.factorcode.org Git - factor.git/blob - extra/redis/command-writer/command-writer-tests.factor
cd4cddd08c599386ef25df4dabef9e8d80b57385
[factor.git] / extra / redis / command-writer / command-writer-tests.factor
1 ! Copyright (C) 2009 Bruno Deferrari
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: tools.test redis.command-writer io.streams.string ;
4 IN: redis.command-writer.tests
5
6 ! Connection
7 { "*1\r\n$4\r\nQUIT\r\n" }
8 [ [ quit ] with-string-writer ] unit-test
9
10 { "*1\r\n$4\r\nPING\r\n" }
11 [ [ ping ] with-string-writer ] unit-test
12
13 { "*2\r\n$4\r\nAUTH\r\n$8\r\npassword\r\n" }
14 [ [ "password" auth ] with-string-writer ] unit-test
15
16 ! String values
17 { "*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$3\r\nfoo\r\n" }
18 [ [ "foo" "key" set ] with-string-writer ] unit-test
19
20 { "*2\r\n$3\r\nGET\r\n$3\r\nkey\r\n" }
21 [ [ "key" get ] with-string-writer ] unit-test
22
23 { "*3\r\n$6\r\nGETSET\r\n$3\r\nkey\r\n$3\r\nfoo\r\n" }
24 [ [ "foo" "key" getset ] with-string-writer ] unit-test
25
26 { "*4\r\n$4\r\nMGET\r\n$4\r\nkey1\r\n$4\r\nkey2\r\n$4\r\nkey3\r\n" }
27 [ [ { "key1" "key2" "key3" } mget ] with-string-writer ] unit-test
28
29 { "*3\r\n$5\r\nSETNX\r\n$3\r\nkey\r\n$3\r\nfoo\r\n" }
30 [ [ "foo" "key" setnx ] with-string-writer ] unit-test
31
32 { "*2\r\n$4\r\nINCR\r\n$3\r\nkey\r\n" }
33 [ [ "key" incr ] with-string-writer ] unit-test
34
35 { "*3\r\n$6\r\nINCRBY\r\n$3\r\nkey\r\n$1\r\n7\r\n" }
36 [ [ 7 "key" incrby ] with-string-writer ] unit-test
37
38 { "*2\r\n$4\r\nDECR\r\n$3\r\nkey\r\n" }
39 [ [ "key" decr ] with-string-writer ] unit-test
40
41 { "*3\r\n$6\r\nDECRBY\r\n$3\r\nkey\r\n$1\r\n7\r\n" }
42 [ [ 7 "key" decrby ] with-string-writer ] unit-test
43
44 { "*2\r\n$6\r\nEXISTS\r\n$3\r\nkey\r\n" }
45 [ [ "key" exists ] with-string-writer ] unit-test
46
47 { "*2\r\n$3\r\nDEL\r\n$3\r\nkey\r\n" }
48 [ [ "key" del ] with-string-writer ] unit-test
49
50 { "*2\r\n$4\r\nTYPE\r\n$3\r\nkey\r\n" }
51 [ [ "key" type ] with-string-writer ] unit-test
52
53 ! Key space
54 { "*2\r\n$4\r\nKEYS\r\n$4\r\npat*\r\n" }
55 [ [ "pat*" keys ] with-string-writer ] unit-test
56
57 { "*1\r\n$9\r\nRANDOMKEY\r\n" }
58 [ [ randomkey ] with-string-writer ] unit-test
59
60 { "*3\r\n$6\r\nRENAME\r\n$3\r\nkey\r\n$6\r\nnewkey\r\n" }
61 [
62     [ "newkey" "key" rename ] with-string-writer
63 ] unit-test
64
65 { "*3\r\n$8\r\nRENAMENX\r\n$3\r\nkey\r\n$6\r\nnewkey\r\n" }
66 [
67     [ "newkey" "key" renamenx ] with-string-writer
68 ] unit-test
69
70 { "*1\r\n$6\r\nDBSIZE\r\n" }
71 [ [ dbsize ] with-string-writer ] unit-test
72
73 { "*3\r\n$6\r\nEXPIRE\r\n$3\r\nkey\r\n$1\r\n7\r\n" }
74 [ [ 7 "key" expire ] with-string-writer ] unit-test
75
76 ! Lists
77 { "*3\r\n$5\r\nRPUSH\r\n$3\r\nkey\r\n$3\r\nfoo\r\n" }
78 [ [ "foo" "key" rpush ] with-string-writer ] unit-test
79
80 { "*3\r\n$5\r\nLPUSH\r\n$3\r\nkey\r\n$3\r\nfoo\r\n" }
81 [ [ "foo" "key" lpush ] with-string-writer ] unit-test
82
83 { "*2\r\n$4\r\nLLEN\r\n$3\r\nkey\r\n" }
84 [ [ "key" llen ] with-string-writer ] unit-test
85
86 { "*4\r\n$6\r\nLRANGE\r\n$3\r\nkey\r\n$1\r\n5\r\n$1\r\n9\r\n" }
87 [ [ 5 9 "key" lrange ] with-string-writer ] unit-test
88
89 { "*4\r\n$5\r\nLTRIM\r\n$3\r\nkey\r\n$1\r\n5\r\n$1\r\n9\r\n" }
90 [ [ 5 9 "key" ltrim ] with-string-writer ] unit-test
91
92 { "*3\r\n$6\r\nLINDEX\r\n$3\r\nkey\r\n$1\r\n7\r\n" }
93 [ [ 7 "key" lindex ] with-string-writer ] unit-test
94
95 { "*4\r\n$4\r\nLSET\r\n$3\r\nkey\r\n$1\r\n0\r\n$3\r\nfoo\r\n" }
96 [ [ "foo" 0 "key" lset ] with-string-writer ] unit-test
97
98 { "*4\r\n$4\r\nLREM\r\n$3\r\nkey\r\n$1\r\n1\r\n$3\r\nfoo\r\n" }
99 [ [ "foo" 1 "key" lrem ] with-string-writer ] unit-test
100
101 { "*2\r\n$4\r\nLPOP\r\n$3\r\nkey\r\n" }
102 [ [ "key" lpop ] with-string-writer ] unit-test
103
104 { "*2\r\n$4\r\nRPOP\r\n$3\r\nkey\r\n" }
105 [ [ "key" rpop ] with-string-writer ] unit-test
106
107 ! Sets
108 { "*3\r\n$4\r\nSADD\r\n$3\r\nkey\r\n$3\r\nfoo\r\n" }
109 [ [ "foo" "key" sadd ] with-string-writer ] unit-test
110
111 { "*3\r\n$4\r\nSREM\r\n$3\r\nkey\r\n$3\r\nfoo\r\n" }
112 [ [ "foo" "key" srem ] with-string-writer ] unit-test
113
114 { "*4\r\n$5\r\nSMOVE\r\n$6\r\nsrckey\r\n$6\r\ndstkey\r\n$3\r\nfoo\r\n" }
115 [ [ "foo" "dstkey" "srckey" smove ] with-string-writer ] unit-test
116
117 { "*2\r\n$5\r\nSCARD\r\n$3\r\nkey\r\n" }
118 [ [ "key" scard ] with-string-writer ] unit-test
119
120 { "*3\r\n$9\r\nSISMEMBER\r\n$3\r\nkey\r\n$3\r\nfoo\r\n" }
121 [ [ "foo" "key" sismember ] with-string-writer ] unit-test
122
123 { "*4\r\n$6\r\nSINTER\r\n$4\r\nkey1\r\n$4\r\nkey2\r\n$4\r\nkey3\r\n" }
124 [ [ { "key1" "key2" "key3" } sinter ] with-string-writer ] unit-test
125
126 { "*5\r\n$11\r\nSINTERSTORE\r\n$6\r\ndstkey\r\n$4\r\nkey1\r\n$4\r\nkey2\r\n$4\r\nkey3\r\n" }
127 [
128     [ { "key1" "key2" "key3" } "dstkey" sinterstore ] with-string-writer
129 ] unit-test
130
131 { "*4\r\n$6\r\nSUNION\r\n$4\r\nkey1\r\n$4\r\nkey2\r\n$4\r\nkey3\r\n" }
132 [
133     [ { "key1" "key2" "key3" } sunion ] with-string-writer
134 ] unit-test
135
136 { "*5\r\n$11\r\nSUNIONSTORE\r\n$6\r\ndstkey\r\n$4\r\nkey1\r\n$4\r\nkey2\r\n$4\r\nkey3\r\n" } [
137     [ { "key1" "key2" "key3" } "dstkey" sunionstore ] with-string-writer
138 ] unit-test
139
140 { "*2\r\n$8\r\nSMEMBERS\r\n$3\r\nkey\r\n" }
141 [ [ "key" smembers ] with-string-writer ] unit-test
142
143 ! Hashes
144 { "*3\r\n$4\r\nHDEL\r\n$3\r\nkey\r\n$5\r\nfield\r\n" }
145 [ [ "field" "key" hdel ] with-string-writer ] unit-test
146
147 { "*3\r\n$7\r\nHEXISTS\r\n$3\r\nkey\r\n$5\r\nfield\r\n" }
148 [ [ "field" "key" hexists ] with-string-writer ] unit-test
149
150 { "*3\r\n$4\r\nHGET\r\n$3\r\nkey\r\n$5\r\nfield\r\n" }
151 [ [ "field" "key" hget ] with-string-writer ] unit-test
152
153 { "*2\r\n$7\r\nHGETALL\r\n$3\r\nkey\r\n" }
154 [ [ "key" hgetall ] with-string-writer ] unit-test
155
156 { "*4\r\n$7\r\nHINCRBY\r\n$3\r\nkey\r\n$5\r\nfield\r\n$1\r\n1\r\n" }
157 [ [ 1 "field" "key" hincrby ] with-string-writer ] unit-test
158
159 { "*4\r\n$12\r\nHINCRBYFLOAT\r\n$3\r\nkey\r\n$5\r\nfield\r\n$3\r\n1.0\r\n" }
160 [ [ 1.0 "field" "key" hincrbyfloat ] with-string-writer ] unit-test
161
162 { "*2\r\n$5\r\nHKEYS\r\n$3\r\nkey\r\n" } [
163     [ "key" hkeys ] with-string-writer
164 ] unit-test
165
166 { "*2\r\n$4\r\nHLEN\r\n$3\r\nkey\r\n" } [
167     [ "key" hlen ] with-string-writer
168 ] unit-test
169
170 { "*4\r\n$5\r\nHMGET\r\n$3\r\nkey\r\n$6\r\nfield1\r\n$6\r\nfield2\r\n" }
171 [
172     [
173         { "field1" "field2" }
174         "key"
175         hmget
176     ] with-string-writer
177 ] unit-test
178
179 { "*6\r\n$5\r\nHMSET\r\n$3\r\nkey\r\n$6\r\nfield1\r\n$6\r\nvalue1\r\n$6\r\nfield2\r\n$6\r\nvalue2\r\n" }
180 [
181     [
182         { { "field1" "value1" } { "field2" "value2" } }
183         "key"
184         hmset
185     ] with-string-writer
186 ] unit-test
187
188 { "*4\r\n$4\r\nHSET\r\n$3\r\nkey\r\n$5\r\nfield\r\n$5\r\nvalue\r\n" }
189 [
190     [
191         "value"
192         "field"
193         "key"
194         hset
195     ] with-string-writer
196 ] unit-test
197
198 { "*4\r\n$6\r\nHSETNX\r\n$3\r\nkey\r\n$5\r\nfield\r\n$5\r\nvalue\r\n" }
199 [ [ "value" "field" "key" hsetnx ] with-string-writer ] unit-test
200
201 { "*2\r\n$5\r\nHVALS\r\n$3\r\nkey\r\n" }
202 [ [ "key" hvals ] with-string-writer ] unit-test
203
204 ! Multiple db
205 { "*2\r\n$6\r\nSELECT\r\n$1\r\n2\r\n" }
206 [ [ 2 select ] with-string-writer ] unit-test
207
208 { "*3\r\n$4\r\nMOVE\r\n$3\r\nkey\r\n$1\r\n2\r\n" }
209 [ [ 2 "key" move ] with-string-writer ] unit-test
210
211 { "*1\r\n$7\r\nFLUSHDB\r\n" }
212 [ [ flushdb ] with-string-writer ] unit-test
213
214 { "*1\r\n$8\r\nFLUSHALL\r\n" }
215 [ [ flushall ] with-string-writer ] unit-test
216
217 ! Sorting
218
219 ! Persistence control
220 { "*1\r\n$4\r\nSAVE\r\n" } [ [ save ] with-string-writer ] unit-test
221
222 { "*1\r\n$6\r\nBGSAVE\r\n" } [ [ bgsave ] with-string-writer ] unit-test
223
224 { "*1\r\n$8\r\nLASTSAVE\r\n" } [ [ lastsave ] with-string-writer ] unit-test
225
226 { "*1\r\n$8\r\nSHUTDOWN\r\n" } [ [ shutdown ] with-string-writer ] unit-test
227
228 ! Remote server control
229 { "*1\r\n$4\r\nINFO\r\n" } [ [ info ] with-string-writer ] unit-test
230
231 { "*1\r\n$7\r\nMONITOR\r\n" } [ [ monitor ] with-string-writer ] unit-test