okuyama 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,140 @@
1
+ require 'spec_helper'
2
+
3
+ describe Okuyama::Client do
4
+
5
+ [true, false].each do |base64_encode_flag|
6
+ describe "when base64_encode_flag = #{base64_encode_flag}" do
7
+
8
+ before :each do
9
+ @testnumval_int = 10
10
+
11
+ @testnumkey = 'testnumkey'
12
+ @testnumval = @testnumval_int.to_s
13
+ @testkey1 = 'testkey1'
14
+ @testval1 = 'testval1'
15
+ @testkey2 = 'testkey2'
16
+ @testval2 = 'testval2'
17
+ @testnewkey = 'testnewkey'
18
+ @testnewval = 'testnewval'
19
+ @testnewval1 = 'testnewval1'
20
+ @testtag = 'testtag'
21
+ @testnewtag = 'testnewtag'
22
+ @testgroup = 'testgroup'
23
+ @testnewgroup = 'testnewgroup'
24
+ @testquery1 = 'testval'
25
+ @testquery2 = 'val1'
26
+ @testnewquery = 'testnewval'
27
+
28
+ if base64_encode_flag == false then
29
+ @testnumkey = Base64.encode64(@testnumkey).chomp
30
+ @testnumval = Base64.encode64(@testnumval).chomp
31
+ @testkey1 = Base64.encode64(@testkey1).chomp
32
+ @testval1 = Base64.encode64(@testval1).chomp
33
+ @testkey2 = Base64.encode64(@testkey2).chomp
34
+ @testval2 = Base64.encode64(@testval2).chomp
35
+ @testnewkey = Base64.encode64(@testnewkey).chomp
36
+ @testnewval = Base64.encode64(@testnewval).chomp
37
+ @testnewval1 = Base64.encode64(@testnewval1).chomp
38
+ @testtag = Base64.encode64(@testtag).chomp
39
+ @testnewtag = Base64.encode64(@testnewtag).chomp
40
+ @testgroup = Base64.encode64(@testgroup).chomp
41
+ @testnewgroup = Base64.encode64(@testnewgroup).chomp
42
+ @testquery1 = Base64.encode64(@testquery1).chomp
43
+ @testquery2 = Base64.encode64(@testquery2).chomp
44
+ @testnewquery = Base64.encode64(@testnewquery).chomp
45
+ end
46
+
47
+
48
+ @client = Okuyama::Client.new(:host=>'localhost', :port=>8888, :base64_encode_flag=>base64_encode_flag)
49
+ @client.debug = true
50
+ @client.remove_value(@testnumkey)
51
+ @client.remove_value(@testkey1)
52
+ @client.remove_value(@testkey2)
53
+ @client.remove_value(@testnewkey)
54
+ @client.remove_tag_from_key(@testnewtag, @testkey1)
55
+ @client.set_value(@testnumkey, @testnumval)
56
+ @client.set_value_and_create_index(@testkey1, @testval1, :tags=>[@testtag], :group=>@testgroup, :min_n=>1, :max_n=>3)
57
+ @client.set_value(@testkey2, @testval2, @testtag)
58
+
59
+ end
60
+
61
+ after :each do
62
+ @client.close
63
+ end
64
+
65
+ describe "set_value_and_create_index(key, val, :tags=>tags, :group=>group, :min_n=>min_n, :max_n=>max_n)" do
66
+ describe "when key exists," do
67
+ it "should success" do
68
+ Okuyama.logger.debug("send: #{@client.protocol.message_of_set_value_and_create_index(@testkey1, @testval1, @testtag, @testgroup, '1', '3').inspect}")
69
+ result = @client.set_value_and_create_index(@testkey1, @testval1, :tags=>[@testtag], :group=>@testgroup, :min_n=>1, :max_n=>3)
70
+ result.should be_true
71
+ end
72
+ end
73
+ describe "when key does not exist," do
74
+ it "should success" do
75
+ Okuyama.logger.debug("send: #{@client.protocol.message_of_set_value_and_create_index(@testnewkey, @testnewval, @testnewtag, @testnewgroup, '1', '3').inspect}")
76
+ result = @client.set_value_and_create_index(@testnewkey, @testnewval, :tags=>[@testnewtag], :group=>@testnewgroup, :min_n=>1, :max_n=>3)
77
+ result.should be_true
78
+ end
79
+ end
80
+ end
81
+
82
+ describe "search_value(query)" do
83
+ describe "when key exists," do
84
+ it "should return keys" do
85
+ Okuyama.logger.debug("send: #{@client.protocol.message_of_search_value([@testquery1]).inspect}")
86
+ result = @client.search_value(@testquery1)
87
+ result.sort!
88
+ result.should == [@testkey1]
89
+ end
90
+ end
91
+ describe "when key does not exist," do
92
+ it "should return []" do
93
+ result = @client.search_value(@testnewquery)
94
+ result.should == []
95
+ end
96
+ end
97
+ end
98
+
99
+ describe "search_value(query, :condition=>:and, :group=>group, :nsize=>nsize)" do
100
+ if false then
101
+ describe "when key exists," do
102
+ it "should return keys" do
103
+ Okuyama.logger.debug("send: #{@client.protocol.message_of_search_value([@testquery1, @testquery2], '1', @testgroup, '3').inspect}")
104
+ result = @client.search_value([@testquery1, @testquery2], :condition=>:and, :group=>@testgroup, :nsize=>3)
105
+ result.sort!
106
+ result.should == ['testkey1']
107
+ end
108
+ end
109
+ end
110
+ describe "when key does not exist," do
111
+ it "should return []" do
112
+ result = @client.search_value([@testquery1, @testnewquery], :condition=>:and, :group=>@testgroup, :nsize=>3)
113
+ result.should == []
114
+ end
115
+ end
116
+ end
117
+
118
+ describe "search_value(query, :condition=>:or, :group=>group, :nsize=>nsize)" do
119
+ if false then
120
+ describe "when key exists," do
121
+ it "should return keys" do
122
+ Okuyama.logger.debug("send: #{@client.protocol.message_of_search_value([@testquery1, @testquery2], '2', @testgroup, '3').inspect}")
123
+ result = @client.search_value([@testquery1, @testquery2], :condition=>:or, :group=>@testgroup, :nsize=>3)
124
+ result.sort!
125
+ result.should == ['testkey1']
126
+ end
127
+ end
128
+ end
129
+ describe "when key does not exist," do
130
+ it "should return []" do
131
+ result = @client.search_value([@testnewquery, @testnewquery], :condition=>:or, :group=>@testgroup, :nsize=>3)
132
+ result.should == []
133
+ end
134
+ end
135
+ end
136
+
137
+ end
138
+ end
139
+ end
140
+
@@ -1,29 +1,506 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Okuyama::Client do
4
- before :each do
5
- @client = Okuyama::Client.new(:host=>'localhost', :port=>8888)
6
- end
7
-
8
- after :each do
9
- @client.close
10
- end
11
4
 
12
- it "should set value without tags" do
13
- result = @client.set_value('testkey', 'testval')
14
- result.should == ["true", "OK"]
15
- end
5
+ [nil, true, false].each do |base64_encode_flag|
6
+ describe "when base64_encode_flag = #{base64_encode_flag}" do
7
+
8
+ before :each do
9
+ @testnumkey = 'testnumkey'
10
+ @testnumval = '10'
11
+ @testkey1 = 'testkey1'
12
+ @testval1 = 'testval1'
13
+ @testkey2 = 'testkey2'
14
+ @testval2 = 'testval2'
15
+ @testnewkey = 'testnewkey'
16
+ @testnewval = 'testnewval'
17
+ @testnewval1 = 'testnewval1'
18
+ @testtag = 'testtag'
19
+ @testnewtag = 'testnewtag'
20
+ @testgroup = 'testgroup'
21
+ @testnewgroup = 'testnewgroup'
22
+ @testquery1 = 'testval'
23
+ @testquery2 = 'val1'
24
+ @testnewquery = 'testnewval'
25
+
26
+ if base64_encode_flag == false then
27
+ @testnumkey = Base64.encode64(@testnumkey).chomp
28
+ @testnumval = Base64.encode64(@testnumval).chomp
29
+ @testkey1 = Base64.encode64(@testkey1).chomp
30
+ @testval1 = Base64.encode64(@testval1).chomp
31
+ @testkey2 = Base64.encode64(@testkey2).chomp
32
+ @testval2 = Base64.encode64(@testval2).chomp
33
+ @testnewkey = Base64.encode64(@testnewkey).chomp
34
+ @testnewval = Base64.encode64(@testnewval).chomp
35
+ @testnewval1 = Base64.encode64(@testnewval1).chomp
36
+ @testtag = Base64.encode64(@testtag).chomp
37
+ @testnewtag = Base64.encode64(@testnewtag).chomp
38
+ @testgroup = Base64.encode64(@testgroup).chomp
39
+ @testnewgroup = Base64.encode64(@testnewgroup).chomp
40
+ @testquery1 = Base64.encode64(@testquery1).chomp
41
+ @testquery2 = Base64.encode64(@testquery2).chomp
42
+ @testnewquery = Base64.encode64(@testnewquery).chomp
43
+ end
44
+
45
+ @client = Okuyama::Client.new(:host=>'localhost', :port=>8888, :base64_encode_flag=>base64_encode_flag)
46
+ @client.debug = true
47
+ @client.remove_value(@testnumkey)
48
+ @client.remove_value(@testkey1)
49
+ @client.remove_value(@testkey2)
50
+ @client.remove_value(@testnewkey)
51
+ @client.remove_tag_from_key(@testnewtag, @testkey1)
52
+ @client.set_value(@testnumkey, @testnumval)
53
+ @client.set_value_and_create_index(@testkey1, @testval1, :tags=>[@testtag], :group=>@testgroup, :min_n=>1, :max_n=>3)
54
+ @client.set_value(@testkey2, @testval2, @testtag)
16
55
 
17
- it "should set value with tags" do
18
- result = @client.set_value('testkey', 'testval', :tags=>['testtag'])
19
- result.should == ["true", "OK"]
20
- end
56
+ end
57
+
58
+ after :each do
59
+ @client.close
60
+ end
61
+
62
+ describe "protocol_version" do
63
+ it "should return protocol version" do
64
+ result = @client.protocol_version
65
+ result.should == '1.0.0'
66
+ end
67
+ end
68
+
69
+ describe "init_count" do
70
+ it "should return init count(integer)" do
71
+ result = @client.init_count
72
+ result.should > 0
73
+ end
74
+
75
+ it "should return init count(text)" do
76
+ @client.to_i_flag = false
77
+ result = @client.init_count
78
+ result.should =~ /[0-9]+/
79
+ end
80
+ end
81
+
82
+ describe "set_value(key, value)" do
83
+ describe "when key exists," do
84
+ it "should set value" do
85
+ result = @client.set_value(@testkey1, @testnewval1)
86
+ result.should == true
87
+ val = @client.get_value(@testkey1)
88
+ val.should == @testnewval1
89
+ end
90
+ end
91
+ describe "when key does not exist," do
92
+ it "should set value" do
93
+ result = @client.set_value(@testnewkey, @testnewval)
94
+ result.should == true
95
+ val = @client.get_value(@testnewkey)
96
+ val.should == @testnewval
97
+ end
98
+ end
99
+ end
100
+
101
+ describe "set_value(key, value, tag): tag is a String" do
102
+ describe "when key exists," do
103
+ it "should set value" do
104
+ result = @client.set_value(@testkey1, @testnewval1, @testnewtag)
105
+ result.should == true
106
+ val = @client.get_value(@testkey1)
107
+ val.should == @testnewval1
108
+ key_list = @client.get_tag_keys(@testtag)
109
+ key_list.include?(@testkey1).should be_true
110
+ key_list = @client.get_tag_keys(@testnewtag)
111
+ key_list.include?(@testkey1).should be_true
112
+ end
113
+ end
114
+ describe "when key does not exist," do
115
+ it "should set value" do
116
+ result = @client.set_value(@testnewkey, @testnewval, @testnewtag)
117
+ result.should == true
118
+ val = @client.get_value(@testnewkey)
119
+ val.should == @testnewval
120
+ key_list = @client.get_tag_keys(@testnewtag)
121
+ key_list.include?(@testnewkey).should be_true
122
+ end
123
+ end
124
+ end
125
+
126
+ describe "set_value(key, value, tags): 'tags' is a Array of String" do
127
+ describe "when key exists," do
128
+ it "should set value" do
129
+ result = @client.set_value(@testkey1, @testnewval1, [@testtag])
130
+ result.should == true
131
+ val = @client.get_value(@testkey1)
132
+ val.should == @testnewval1
133
+ key_list = @client.get_tag_keys(@testtag)
134
+ key_list.include?(@testkey1).should be_true
135
+ key_list = @client.get_tag_keys(@testnewtag)
136
+ key_list.include?(@testkey1).should be_false
137
+ end
138
+ end
139
+ describe "when key does not exist," do
140
+ it "should set value" do
141
+ result = @client.set_value(@testnewkey, @testnewval, [@testtag])
142
+ result.should == true
143
+ val = @client.get_value(@testnewkey)
144
+ val.should == @testnewval
145
+ key_list = @client.get_tag_keys(@testnewtag)
146
+ key_list.include?(@testnewkey).should be_true
147
+ end
148
+ end
149
+ end
150
+
151
+ describe "set_value(key, value, :tags=>tags): 'tags' is a Array of String" do
152
+ describe "when key exists," do
153
+ it "should set value" do
154
+ result = @client.set_value(@testkey1, @testnewval1, :tags=>[@testtag])
155
+ result.should == true
156
+ val = @client.get_value(@testkey1)
157
+ val.should == @testnewval1
158
+ key_list = @client.get_tag_keys(@testtag)
159
+ key_list.include?(@testkey1).should be_true
160
+ key_list = @client.get_tag_keys(@testnewtag)
161
+ key_list.include?(@testkey1).should be_false
162
+ end
163
+ end
164
+ describe "when key does not exist," do
165
+ it "should set value" do
166
+ result = @client.set_value(@testnewkey, @testnewval, :tags=>[@testnewtag])
167
+ result.should == true
168
+ val = @client.get_value(@testnewkey)
169
+ val.should == @testnewval
170
+ key_list = @client.get_tag_keys(@testnewtag)
171
+ key_list.include?(@testnewkey).should be_true
172
+ end
173
+ end
174
+ end
175
+
176
+ describe "get_value(key)" do
177
+ describe "when key exists," do
178
+ it "should return value" do
179
+ result = @client.get_value(@testkey1)
180
+ result.should == @testval1
181
+ end
182
+ end
183
+ describe "when key does not exist," do
184
+ it "should fail" do
185
+ result = @client.get_value(@testnewkey)
186
+ result.should be_nil
187
+ end
188
+ end
189
+ end
190
+
191
+ describe "get_tag_keys(tag)" do
192
+ describe "when tag exists," do
193
+ it "should return keys" do
194
+ result = @client.get_tag_keys(@testtag)
195
+ result.sort!
196
+ result.shift == @testkey1
197
+ result.shift == @testkey2
198
+ result == []
199
+ end
200
+ end
201
+ describe "when tag does not exist," do
202
+ it "should return []" do
203
+ result = @client.get_tag_keys(@testnewtag)
204
+ result.should == []
205
+ end
206
+ end
207
+ end
208
+
209
+ describe "remove_value(key)" do
210
+ describe "when key does not exist," do
211
+ it "should fail" do
212
+ result = @client.remove_value(@testnewkey)
213
+ result.should be_nil
214
+ end
215
+ end
216
+ describe "when key exists," do
217
+ it "should success" do
218
+ result = @client.remove_value(@testkey1)
219
+ result.should == true
220
+ end
221
+ end
222
+ end
223
+
224
+ describe "set_new_value(key, value)" do
225
+ describe "when key exists," do
226
+ it "should fail" do
227
+ result = @client.set_new_value(@testkey1, @testnewval1)
228
+ result.should be_nil
229
+ val = @client.get_value(@testkey1)
230
+ val.should == @testval1
231
+ end
232
+ end
233
+ describe "when key does not exist," do
234
+ it "should set value" do
235
+ result = @client.set_new_value(@testnewkey, @testnewval)
236
+ result.should == true
237
+ val = @client.get_value(@testnewkey)
238
+ val.should == @testnewval
239
+ end
240
+ end
241
+ end
242
+
243
+ describe "set_new_value(key, value, tag): 'tag' is a String" do
244
+ describe "when key exists," do
245
+ it "should fail" do
246
+ result = @client.set_new_value(@testkey1, @testnewval1, @testnewtag)
247
+ result.should be_nil
248
+ end
249
+ end
250
+ describe "when key does not exist," do
251
+ it "should set value" do
252
+ result = @client.set_new_value(@testnewkey, @testnewval, @testnewtag)
253
+ result.should == true
254
+ val = @client.get_value(@testnewkey)
255
+ val.should == @testnewval
256
+ key_list = @client.get_tag_keys(@testnewtag)
257
+ key_list.include?(@testnewkey).should be_true
258
+ end
259
+ end
260
+ end
261
+
262
+ describe "set_new_value(key, value, tags): 'tags' is a Array of String" do
263
+ describe "when key exists," do
264
+ it "should fail" do
265
+ result = @client.set_new_value(@testkey1, @testnewval1, [@testtag])
266
+ result.should be_nil
267
+ end
268
+ end
269
+ describe "when key does not exist," do
270
+ it "should set value" do
271
+ result = @client.set_new_value(@testnewkey, @testnewval, [@testtag])
272
+ result.should == true
273
+ val = @client.get_value(@testnewkey)
274
+ val.should == @testnewval
275
+ key_list = @client.get_tag_keys(@testnewtag)
276
+ key_list.include?(@testnewkey).should be_true
277
+ end
278
+ end
279
+ end
280
+
281
+ describe "set_new_value(key, value, :tags=>tags): 'tags' is a Array of String" do
282
+ describe "when key exists," do
283
+ it "should fail" do
284
+ result = @client.set_new_value(@testkey1, @testnewval1, :tags=>[@testtag])
285
+ result.should be_nil
286
+ end
287
+ end
288
+ describe "when key does not exist," do
289
+ it "should set value" do
290
+ result = @client.set_new_value(@testnewkey, @testnewval, :tags=>[@testnewtag])
291
+ result.should == true
292
+ val = @client.get_value(@testnewkey)
293
+ val.should == @testnewval
294
+ key_list = @client.get_tag_keys(@testnewtag)
295
+ key_list.include?(@testnewkey).should be_true
296
+ end
297
+ end
298
+ end
299
+
300
+ describe "get_value_version_check(key)" do
301
+ describe "when key exists," do
302
+ it "should return value and version number" do
303
+ result = @client.get_value_version_check(@testkey1)
304
+ result.size.should == 2
305
+ result[0].should == @testval1
306
+ result[1].length.should > 0
307
+ end
308
+ end
309
+ describe "when key does not exist," do
310
+ it "should set value" do
311
+ result = @client.get_value_version_check(@testnewkey)
312
+ result.should be_nil
313
+ end
314
+ end
315
+ end
316
+
317
+ describe "set_value_version_check(key, value, version)" do
318
+ describe "when key exists," do
319
+ describe "when version number is same" do
320
+ it "should set value" do
321
+ result = @client.get_value_version_check(@testkey1)
322
+ version = result[1]
323
+ result = @client.set_value_version_check(@testkey1, @testnewval1, result[1])
324
+ result.should == true
325
+ val = @client.get_value(@testkey1)
326
+ val.should == @testnewval1
327
+ end
328
+ end
329
+ describe "when version number is different" do
330
+ it "should fail" do
331
+ result = @client.set_value_version_check(@testkey1, @testnewval1, 'differentversion')
332
+ result.should be_nil
333
+ end
334
+ end
335
+ end
336
+ describe "when key does not exist," do
337
+ it "should fail" do
338
+ result = @client.set_value_version_check(@testnewkey, @testnewval, 'newversion')
339
+ result.should be_nil
340
+ end
341
+ end
342
+ end
343
+
344
+ describe "set_value_version_check(key, value, version, tag): tag is a String" do
345
+ describe "when key exists," do
346
+ describe "when version number is same" do
347
+ it "should set value" do
348
+ result = @client.get_value_version_check(@testkey1)
349
+ version = result[1]
350
+ result = @client.set_value_version_check(@testkey1, @testnewval1, version, @testnewtag)
351
+ result.should == true
352
+ val = @client.get_value(@testkey1)
353
+ val.should == @testnewval1
354
+ key_list = @client.get_tag_keys(@testnewtag)
355
+ key_list.include?(@testkey1).should be_true
356
+ end
357
+ end
358
+ describe "when version number is different" do
359
+ it "should fail" do
360
+ result = @client.set_value_version_check(@testkey1, @testnewval1, 'differentversion')
361
+ result.should be_nil
362
+ end
363
+ end
364
+ end
365
+ describe "when key does not exist," do
366
+ it "should fail" do
367
+ result = @client.set_value_version_check(@testnewkey, @testnewval, 'newversion')
368
+ result.should be_nil
369
+ end
370
+ end
371
+ end
372
+
373
+ describe "set_value_version_check(key, value, version, tags): 'tags' is a Array of String" do
374
+ describe "when key exists," do
375
+ describe "when version number is same" do
376
+ it "should set value" do
377
+ result = @client.get_value_version_check(@testkey1)
378
+ version = result[1]
379
+ result = @client.set_value_version_check(@testkey1, @testnewval1, version, [@testnewtag])
380
+ result.should == true
381
+ val = @client.get_value(@testkey1)
382
+ val.should == @testnewval1
383
+ key_list = @client.get_tag_keys(@testnewtag)
384
+ key_list.include?(@testkey1).should be_true
385
+ end
386
+ end
387
+ describe "when version number is different" do
388
+ it "should fail" do
389
+ result = @client.set_value_version_check(@testkey1, @testnewval1, 'differentversion')
390
+ result.should be_nil
391
+ end
392
+ end
393
+ end
394
+ describe "when key does not exist," do
395
+ it "should fail" do
396
+ result = @client.set_value_version_check(@testnewkey, @testnewval, 'newversion')
397
+ result.should be_nil
398
+ end
399
+ end
400
+ end
401
+
402
+ describe "set_value_version_check(key, value, version, :tags=>tags): 'tags' is a Array of String" do
403
+ describe "when key exists," do
404
+ describe "when version number is same" do
405
+ it "should set value" do
406
+ result = @client.get_value_version_check(@testkey1)
407
+ version = result[1]
408
+ result = @client.set_value_version_check(@testkey1, @testnewval1, version, :tags=>[@testnewtag])
409
+ result.should == true
410
+ val = @client.get_value(@testkey1)
411
+ val.should == @testnewval1
412
+ key_list = @client.get_tag_keys(@testnewtag)
413
+ key_list.include?(@testkey1).should be_true
414
+ end
415
+ end
416
+ describe "when version number is different" do
417
+ it "should fail" do
418
+ result = @client.set_value_version_check(@testkey1, @testnewval1, 'differentno')
419
+ result.should be_nil
420
+ end
421
+ end
422
+ end
423
+ describe "when key does not exist," do
424
+ it "should fail" do
425
+ result = @client.set_value_version_check(@testnewkey, @testnewval, 'newversion')
426
+ result.should be_nil
427
+ end
428
+ end
429
+ end
430
+
431
+ describe "get_multi_value(key)" do
432
+ describe "when all keys exist," do
433
+ it "should return values" do
434
+ result = @client.get_multi_value([@testkey1, @testkey2])
435
+ result.should == [@testval1, @testval2]
436
+ end
437
+ end
438
+ describe "when keys exist or not," do
439
+ it "should return existing values" do
440
+ result = @client.get_multi_value([@testkey1, @testnewkey])
441
+ result.should == [@testval1, nil]
442
+ end
443
+ end
444
+ describe "when no keys exist," do
445
+ it "should return nils" do
446
+ result = @client.get_multi_value([@testnewkey, @testnewkey])
447
+ result.should == [nil, nil]
448
+ end
449
+ end
450
+ end
21
451
 
22
- it "should get value with tags" do
23
- result = @client.set_value('testkey', 'testval')
24
- result = @client.get_value('testkey')
25
- result.should == 'testval'
26
- end
452
+ describe "get_tag_values(tag)" do
453
+ describe "when keys exist," do
454
+ it "should return key-values" do
455
+ result = @client.get_tag_values(@testtag)
456
+ result.sort!{|a,b|a[0]<=>b[0]}
457
+ result.shift.should == [@testkey1, @testval1]
458
+ result.shift.should == [@testkey2, @testval2]
459
+ result.should == []
460
+ end
461
+ end
462
+ describe "when no keys exist," do
463
+ it "should return []" do
464
+ result = @client.get_tag_values(@testnewtag)
465
+ result.should == []
466
+ end
467
+ end
468
+ end
469
+
470
+ describe "remove_tag_from_key(tag, key)" do
471
+ describe "when tag&key exist," do
472
+ it "should remove tag from key" do
473
+ result = @client.remove_tag_from_key(@testtag, @testkey1)
474
+ result.should be_true
475
+ key_list = @client.get_tag_keys(@testtag)
476
+ key_list.include?(@testkey1).should be_false
477
+ end
478
+ end
479
+ describe "when tag&key do not exist," do
480
+ it "should fail" do
481
+ result = @client.remove_tag_from_key(@testnewtag, @testkey1)
482
+ result.should be_nil
483
+ end
484
+ end
485
+ end
486
+
487
+ describe "set_value_and_create_index(key, val)" do
488
+ describe "when key exists," do
489
+ it "should success" do
490
+ result = @client.set_value_and_create_index(@testkey1, @testval1)
491
+ result.should be_true
492
+ end
493
+ end
494
+ describe "when key does not exist," do
495
+ it "should success" do
496
+ result = @client.set_value_and_create_index(@testnewkey, @testnewval)
497
+ result.should be_true
498
+ end
499
+ end
500
+ end
27
501
 
502
+
503
+ end
504
+ end
28
505
  end
29
506
 
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Okuyama::Protocol::Version1 do
4
+ before :each do
5
+ @protocol = Okuyama::Protocol::Version1.new
6
+ end
7
+
8
+ it "should write incr_value message" do
9
+ result = @protocol.message_of_incr_value('testnumkey', '1')
10
+ result.chomp.should == "13,dGVzdG51bWtleQ==,0,MQ=="
11
+ end
12
+
13
+ it "should write set_value_and_create_index message" do
14
+ result = @protocol.message_of_set_value_and_create_index('key', 'val', ['tag'], 'group', '1', '3')
15
+ result.chomp.should == "42,a2V5,dGFn,0,dmFs,Z3JvdXA=,1,3"
16
+ end
17
+
18
+ it "should write search_value message" do
19
+ result = @protocol.message_of_search_value(['query1', 'query2'], '1', 'group', '3')
20
+ result.chomp.should == "43,cXVlcnkx:cXVlcnky,1,Z3JvdXA=,3"
21
+ end
22
+
23
+ end
24
+