rails_kvs_driver 0.2.1 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 69d5596c2cf269f3a9f297ade6fd437fd9be0ffb
4
- data.tar.gz: 23a9223ceec011aeed0af3ddf55444824b441cc1
3
+ metadata.gz: 3c26761a67864a1eec96c0788df35795c30439d7
4
+ data.tar.gz: d0aa335dac73aeb03151d00684a9c502189c6006
5
5
  SHA512:
6
- metadata.gz: 1ad5af5de6403f7f1e5801b3b48ec83bcc3e5605f8e9d465441769cc1acfb2dabc41add1c684264ed07060b4522fc018ca0ad30ea8d8fb3be5cee34d94a013a2
7
- data.tar.gz: 24295617a232b5c8cb650a5d6613f552bbd86bbe3e14cb2363dcf867a2a5d37086a366788d88d29d59ebd8484c12e59720d5d08eae66302b646e62dbcf6872ad
6
+ metadata.gz: b0828ce5858f49a0fa9228ffda88f394c06db0e7287c5cf212b9f7dc3ff9e2c3c26468a75d10999d9614630c32f92dff8190b4d4479c72b5b4eb1b355f680a7d
7
+ data.tar.gz: cbc5f444e47da2c704760e39f6093440469da71d748c3a38ba1a9e08bc95b8eed9a846b8f39be502bb86cf617fc0f1923a83cd7d0067898438a2b02a59376eb2
@@ -0,0 +1,37 @@
1
+ module RailsKvsDriver
2
+ module CommonMethods
3
+ # common functions for keys.
4
+ module Listable
5
+ # execute the block of code for each sorted_set.
6
+ #
7
+ # @param &block [{|key, value| }] each the block of code for each key having string, and value.
8
+ def each
9
+ keys.each {|key| yield key, self[key] }
10
+ end
11
+
12
+ # kvs check empty.
13
+ #
14
+ # @return [Boolean] result.
15
+ def empty?
16
+ (length<1)
17
+ end
18
+
19
+ # check key in sorted set.
20
+ #
21
+ # @param key [String] key name.
22
+ # @return [Boolean] result.
23
+ def has_key?(key)
24
+ keys.include?(key)
25
+ end
26
+
27
+ # get length of sorted_set.
28
+ #
29
+ # @return [Integer] length of keys.
30
+ def length
31
+ keys.length
32
+ end
33
+
34
+ alias size length
35
+ end
36
+ end
37
+ end
@@ -1,7 +1,12 @@
1
+ require 'rails_kvs_driver/lists/lists'
1
2
  require 'rails_kvs_driver/sorted_sets/sorted_sets'
3
+ require 'rails_kvs_driver/common_methods/listable'
2
4
 
3
5
  module RailsKvsDriver
4
6
  module DefinedBaseMethod
7
+ include RailsKvsDriver::CommonMethods::Listable
8
+ include Enumerable
9
+
5
10
  # initialize driver.
6
11
  # @param kvs_instance [Object] instance of key-value store.
7
12
  # @param driver_config [Hash] driver config.
@@ -27,33 +32,18 @@ module RailsKvsDriver
27
32
  set(key, value)
28
33
  end
29
34
 
30
- # return initialized SortedSet class.
35
+ # return initialized SortedSets class.
31
36
  #
32
- # @return [RailsKvsDriver::SortedSets] SortedSet
37
+ # @return [RailsKvsDriver::SortedSets::SortedSets] SortedSets
33
38
  def sorted_sets
34
39
  SortedSets::SortedSets.new(self)
35
40
  end
36
41
 
37
- # execute the block of code for each key having string, and value.
38
- # @param &block [{|key, value| }] each the block of code for each key having string, and value.
39
- def each
40
- keys.each {|key| yield key, self[key] }
41
- end
42
-
43
- # check key in redis.
44
- #
45
- # @param key [String] key name
46
- # @return [Boolean] result
47
- def has_key?(key)
48
- !(self[key].nil?)
49
- end
50
-
51
- # get length of keys.
42
+ # return initialized lists class.
52
43
  #
53
- # @return [Integer]length of keys.
54
- def length
55
- keys.length
44
+ # @return [RailsKvsDriver::Lists::Lists] lists
45
+ def lists
46
+ Lists::Lists.new(self)
56
47
  end
57
-
58
48
  end
59
49
  end
@@ -0,0 +1,116 @@
1
+ module RailsKvsDriver
2
+ module Lists
3
+ class List
4
+ attr_accessor :driver_instance
5
+ attr_accessor :key
6
+
7
+ # initialize list
8
+ #
9
+ # @param driver_instance [RailsKvsDriver::Base] instance of driver.
10
+ # @param key [String] key of sorted_set.
11
+ def initialize(driver_instance, key)
12
+ @driver_instance = driver_instance
13
+ @key = key
14
+ end
15
+
16
+ # get value of the list.
17
+ # when the key or index doesn't exist, return nil.
18
+ #
19
+ # @param index [Integer] index of the list.
20
+ # @return [String] value
21
+ def [](index)
22
+ @driver_instance.get_list_value(@key, index)
23
+ end
24
+
25
+ # set value to index of the list.
26
+ # when the key or index doesn't exist, raise error.
27
+ #
28
+ # @param index [Integer] index of the list.
29
+ # @param value [String] value
30
+ def []=(index, value)
31
+ @driver_instance.set_list_value(@key, index, value)
32
+ end
33
+
34
+ # delete value from list.
35
+ #
36
+ # @param value [String] delete value.
37
+ def delete(value)
38
+ @driver_instance.delete_list_value(@key, value)
39
+ end
40
+
41
+ # delete at index from list.
42
+ #
43
+ # @param index [Integer] index of the list.
44
+ def delete_at(index)
45
+ @driver_instance.delete_list_value_at(@key, index)
46
+ end
47
+
48
+ # execute the block of code for each value of the list.
49
+ #
50
+ # @param limit [Integer] limit number to acquire at a time. (default=1000)
51
+ # @param &block [{|index, value| }] execute the block of code for each value of the list.
52
+ def each(limit=1000)
53
+ count = length
54
+ position = 0
55
+
56
+ while position < count
57
+ @driver_instance.get_list_values(@key, position, position + (limit-1)).each do |value|
58
+ yield position, value
59
+ position += 1
60
+ end
61
+ end
62
+ end
63
+
64
+ # check if a value is included.
65
+ #
66
+ # @param value [String] value
67
+ # @return [Boolean] result
68
+ def include?(value)
69
+ each do |list_value|
70
+ return true if list_value == value
71
+ end
72
+ return false
73
+ end
74
+
75
+ # return length of the list.
76
+ def length
77
+ @driver_instance.count_list_value(@key)
78
+ end
79
+
80
+ # push value to first of the list.
81
+ # when the key doesn't exist, it's made newly list.
82
+ #
83
+ # @param value [String] value.
84
+ def push_fist(value)
85
+ @driver_instance.push_list_first(@key, value)
86
+ end
87
+
88
+ # push value to last of the list.
89
+ # when the key doesn't exist, it's made newly list.
90
+ #
91
+ # @param value [String] value.
92
+ def push_last(value)
93
+ @driver_instance.push_list_last(@key, value)
94
+ end
95
+
96
+ # pop value from first of the list.
97
+ # when the key doesn't exist or is empty. return nil.
98
+ #
99
+ # @return [String] value of the key.
100
+ def pop_first
101
+ @driver_instance.pop_list_first(@key)
102
+ end
103
+
104
+ # pop value from last of the list.
105
+ # when the key doesn't exist or is empty. return nil.
106
+ #
107
+ # @return [String] value of the key.
108
+ def pop_last
109
+ @driver_instance.pop_list_last(@key)
110
+ end
111
+
112
+
113
+ alias size length
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,54 @@
1
+ require 'rails_kvs_driver/lists/list'
2
+ require 'rails_kvs_driver/common_methods/listable'
3
+
4
+ module RailsKvsDriver
5
+ module Lists
6
+ class Lists
7
+ include RailsKvsDriver::CommonMethods::Listable
8
+ include Enumerable
9
+
10
+ attr_accessor :driver_instance
11
+
12
+ # initialize lists
13
+ #
14
+ # @param driver_instance [RailsKvsDriver::Base]
15
+ def initialize(driver_instance)
16
+ @driver_instance = driver_instance
17
+ end
18
+
19
+ # get list.
20
+ #
21
+ # @param key [String] sorted_set key.
22
+ # @return [SortedSet] sorted_set of key.
23
+ def [](key)
24
+ RailsKvsDriver::Lists::List.new(@driver_instance, key)
25
+ end
26
+
27
+ # add new list.
28
+ # if key exists, delete old list.
29
+ #
30
+ # @param key [String] list key.
31
+ # @param values [Array<String>] array of values.
32
+ # @return [Array<String>] array of values.
33
+ def []=(key, values)
34
+ delete(key) if has_key?(key)
35
+ list = self[key]
36
+ values.each {|value| list.push_last(value) }
37
+ end
38
+
39
+ # delete list.
40
+ #
41
+ # @param key [String] key of list.
42
+ def delete(key)
43
+ @driver_instance.delete(key)
44
+ end
45
+
46
+ # get all list keys from kvs.
47
+ #
48
+ # @return [Array<String>] array of key names.
49
+ def keys
50
+ @driver_instance.get_list_keys
51
+ end
52
+ end
53
+ end
54
+ end
@@ -1,6 +1,8 @@
1
1
  module RailsKvsDriver
2
2
  module SortedSets
3
3
  class SortedSet
4
+ include Enumerable
5
+
4
6
  attr_accessor :driver_instance
5
7
  attr_accessor :key
6
8
 
@@ -38,7 +40,7 @@ module RailsKvsDriver
38
40
  # @param reverse [Boolean] order by desc. (default=false(acs))
39
41
  # @param limit [Integer] limit number to acquire at a time. (default=1000)
40
42
  # @param &block [{|member, score, position| }] each the block of code for each member of sorted set.
41
- def each(reverse=false, limit=1000)
43
+ def each(reverse = false, limit = 1000)
42
44
  count = length
43
45
  position = 0
44
46
 
@@ -66,6 +68,15 @@ module RailsKvsDriver
66
68
  @driver_instance.increment_sorted_set(@key, member, score)
67
69
  end
68
70
 
71
+ # decrement member's score of sorted set.
72
+ #
73
+ # @param member [String] member of sorted set.
74
+ # @param score [Float] decrement score
75
+ # @return [Float] score after decrement.
76
+ def decrement(member, score)
77
+ @driver_instance.increment_sorted_set(@key, member, score*-1)
78
+ end
79
+
69
80
  # length of sorted_set
70
81
  #
71
82
  # @return [Integer] length of sorted_set
@@ -88,6 +99,7 @@ module RailsKvsDriver
88
99
  @driver_instance.remove_sorted_set(@key, member)
89
100
  end
90
101
 
102
+ alias size length
91
103
  end
92
104
  end
93
105
  end
@@ -1,8 +1,12 @@
1
1
  require 'rails_kvs_driver/sorted_sets/sorted_set'
2
+ require 'rails_kvs_driver/common_methods/listable'
2
3
 
3
4
  module RailsKvsDriver
4
5
  module SortedSets
5
6
  class SortedSets
7
+ include RailsKvsDriver::CommonMethods::Listable
8
+ include Enumerable
9
+
6
10
  attr_accessor :driver_instance
7
11
 
8
12
  # initialize sorted_sets
@@ -28,7 +32,7 @@ module RailsKvsDriver
28
32
  # @return [Array<Array<member,score>>] meber_sets
29
33
  def []=(key, member_sets)
30
34
  delete(key) if has_key?(key)
31
- sorted_set = SortedSet.new(@driver_instance,key)
35
+ sorted_set = self[key]
32
36
  member_sets.each {|member_set| sorted_set[member_set[0]] = member_set[1]}
33
37
  end
34
38
 
@@ -39,21 +43,6 @@ module RailsKvsDriver
39
43
  @driver_instance.delete(key)
40
44
  end
41
45
 
42
- # execute the block of code for each sorted_set.
43
- #
44
- # @param &block [{|key| }] each the block of code for each key of sorted set.
45
- def each
46
- keys.each {|key| yield key }
47
- end
48
-
49
- # check key in sorted set.
50
- #
51
- # @param key [String] key name.
52
- # @return [Boolean] result.
53
- def has_key?(key)
54
- keys.include?(key)
55
- end
56
-
57
46
  # get all keys from kvs.
58
47
  #
59
48
  # @return [Array<String>] array of key names.
@@ -61,13 +50,6 @@ module RailsKvsDriver
61
50
  @driver_instance.get_sorted_set_keys
62
51
  end
63
52
 
64
- # get length of sorted_set.
65
- #
66
- # @return [Integer] length of keys.
67
- def length
68
- keys.length
69
- end
70
-
71
53
  end
72
54
  end
73
55
  end
@@ -1,3 +1,3 @@
1
1
  module RailsKvsDriver
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -72,6 +72,130 @@ module RailsKvsDriver
72
72
  raise NoMethodError
73
73
  end
74
74
 
75
+
76
+
77
+ #--------------------
78
+ # list (same as list of redis. refer to redis.)
79
+ #--------------------
80
+
81
+ # count value of the list.
82
+ # when the key doesn't exist, return 0.
83
+ #
84
+ # @param key [String] key of the list.
85
+ # @return [Integer] number.
86
+ # @abstract count value of the list.
87
+ def count_list_value(key)
88
+ raise NoMethodError
89
+ end
90
+
91
+ # delete value from list.
92
+ #
93
+ # @param key [String] key of the list.
94
+ # @param value [String] delete value.
95
+ # @abstract delete value from list.
96
+ def delete_list_value(key, value)
97
+ raise NoMethodError
98
+ end
99
+
100
+ # delete at index from list.
101
+ #
102
+ # @param key [String] key of the list.
103
+ # @param index [Integer] index of the list.
104
+ # @abstract delete at index from list.
105
+ def delete_list_value_at(key, index)
106
+ raise NoMethodError
107
+ end
108
+
109
+ # get all keys of existed list.
110
+ #
111
+ # @return [Array<String>] keys.
112
+ # @abstract get all keys of existed list.
113
+ def get_list_keys
114
+ raise NoMethodError
115
+ end
116
+
117
+ # get value from index of the list.
118
+ # when the key doesn't exist, return nil.
119
+ #
120
+ # @param key [String] key of the list.
121
+ # @param index [Integer] index of the list.
122
+ # @return [String] value.
123
+ # @abstract get value from index of the list.
124
+ def get_list_value(key, index)
125
+ raise NoMethodError
126
+ end
127
+
128
+ # get values from index of the list.
129
+ # @example get_list_value(:key) => get all.
130
+ # @example get_list_value(:key, 5, 10) => 5~10 return total 6 values.
131
+ #
132
+ # @param key [String] key of the list.
133
+ # @param start [Integer] start index of the list.
134
+ # @param stop [Integer] end index of the list.
135
+ # @return [Array<String>] value.
136
+ # @abstract get values from index of the list.
137
+ def get_list_values(key, start=0, stop=-1)
138
+ raise NoMethodError
139
+ end
140
+
141
+ # push value to first of the list.
142
+ # when the key doesn't exist, it's made newly list.
143
+ #
144
+ # @param key [String] key of list.
145
+ # @param value [String] push value.
146
+ # @return [Integer] length of list after push.
147
+ # @abstract push value to first of the list.
148
+ def push_list_first(key, value)
149
+ raise NoMethodError
150
+ end
151
+
152
+ # push value to last of the list.
153
+ # when the key doesn't exist, it's made newly list.
154
+ #
155
+ # @param key [String] key of list.
156
+ # @param value [String] push value.
157
+ # @return [Integer] length of list after push.
158
+ # @abstract push value to last of the list.
159
+ def push_list_last(key, value)
160
+ raise NoMethodError
161
+ end
162
+
163
+ # pop value from first of the list.
164
+ # when the key doesn't exist or is empty. return nil.
165
+ #
166
+ # @param key [String] key of the list.
167
+ # @return [String] value of the key.
168
+ # @abstract pop value from first of the list.
169
+ def pop_list_first(key)
170
+ raise NoMethodError
171
+ end
172
+
173
+ # pop value from first of the list.
174
+ # when the key doesn't exist or is empty. return nil.
175
+ #
176
+ # @param key [String] key of the list.
177
+ # @return [String] value of the key.
178
+ # @abstract pop value from last of the list.
179
+ def pop_list_last(key)
180
+ raise NoMethodError
181
+ end
182
+
183
+ # set value to index of the list.
184
+ #
185
+ # @param key [String] key of the list.
186
+ # @param index [Integer] index of the list.
187
+ # @param value [String] set value.
188
+ # @abstract set value to index of the list.
189
+ def set_list_value(key, index, value)
190
+ raise NoMethodError
191
+ end
192
+
193
+
194
+
195
+ #--------------------
196
+ # sorted set (same as sorted set of redis. refer to redis.)
197
+ #--------------------
198
+
75
199
  # add sorted set to kvs.
76
200
  # when the key doesn't exist, it's made newly.
77
201
  # @note same as sorted set of redis. refer to redis.
@@ -191,120 +191,137 @@ shared_examples_for 'RailsKvsDriver example' do |driver_class, driver_config|
191
191
  end
192
192
 
193
193
  context 'sorted_sets' do
194
-
195
- it 'call []' do
194
+ before(:each) do
196
195
  driver_class::session(driver_config) do |kvs|
197
- kvs.add_sorted_set('example', 'element', 1024)
198
- kvs.add_sorted_set('example', 'element2', 1)
199
-
200
- expect(kvs.sorted_sets['example'].length).to eq(2)
201
- expect(kvs.sorted_sets['example','element']).to eq(1024)
196
+ kvs.add_sorted_set('anime', 'nyaruko', 1024)
197
+ kvs.add_sorted_set('anime', 'haganai', 100)
202
198
  end
203
199
  end
204
200
 
205
- it 'call []=' do
201
+ it 'call []' do
206
202
  driver_class::session(driver_config) do |kvs|
207
- kvs.sorted_sets['example'] = ['element', 1]
208
- kvs.sorted_sets['example'] = ['element2', 1]
209
-
210
- expect(kvs.sorted_sets['example'].length).to eq(2)
203
+ expect(kvs.sorted_sets['anime'].instance_of?(RailsKvsDriver::SortedSets::SortedSet)).to be_true
211
204
  end
212
205
  end
213
206
 
214
- it 'call count' do
207
+ it 'call []=' do
215
208
  driver_class::session(driver_config) do |kvs|
216
- kvs.add_sorted_set('example', 'element', 1)
217
- kvs.add_sorted_set('example', 'element2', 1)
218
209
 
219
- expect(kvs.sorted_sets.count('example')).to eq(2)
210
+ expect{
211
+ kvs.sorted_sets['fruit'] = [['Apple', 1], ['Orange', 2]]
212
+ }.to change{
213
+ kvs.sorted_sets.length
214
+ }.by(1)
215
+
216
+ expect(kvs.sorted_sets['fruit'].length).to eq(2)
220
217
  end
221
218
  end
222
219
 
220
+
223
221
  it 'call delete' do
224
222
  driver_class::session(driver_config) do |kvs|
225
- kvs.add_sorted_set('example', 'element', 1)
226
- kvs.add_sorted_set('example2', 'element2', 1)
227
-
228
- expect{kvs.sorted_sets.delete('example2')}.to change{kvs.sorted_sets.length}.by(-1)
223
+ expect{kvs.sorted_sets.delete('anime')}.to change{kvs.sorted_sets.length}.by(-1)
229
224
  end
230
225
  end
231
226
 
232
227
  it 'call each' do
233
228
  driver_class::session(driver_config) do |kvs|
234
- kvs.add_sorted_set('example', 'element', 1)
235
- kvs.add_sorted_set('example2', 'element2', 1)
236
-
237
229
  kvs.sorted_sets.each do |key|
238
- expect(kvs.sorted_sets[key].length).not_to eq(0)
230
+ expect(key).to eq('anime')
239
231
  end
240
232
  end
241
233
  end
242
234
 
243
- it 'call each_member' do
235
+ it 'call has_key?' do
244
236
  driver_class::session(driver_config) do |kvs|
245
- kvs.add_sorted_set('example', 'element', 10)
246
- kvs.add_sorted_set('example', 'element2', 1)
247
-
248
- kvs.sorted_sets.each_member('example') do |member, score, position|
249
- expect(kvs.sorted_sets['example', member]).to eq(score)
250
- end
237
+ expect(kvs.sorted_sets.has_key?('anime')).to be_true
238
+ expect(kvs.sorted_sets.has_key?('nothing key')).to be_false
251
239
  end
252
240
  end
253
241
 
254
- it 'call has_key?' do
242
+ it 'call keys' do
255
243
  driver_class::session(driver_config) do |kvs|
256
- kvs.add_sorted_set('example', 'element', 10)
257
-
258
- expect(kvs.sorted_sets.has_key?('example')).to be_true
259
- expect(kvs.sorted_sets.has_key?('nothing key')).to be_false
244
+ expect(kvs.sorted_sets.keys.length).to eq(1)
260
245
  end
261
246
  end
262
247
 
263
- it 'call has_member?' do
248
+ it 'call length' do
264
249
  driver_class::session(driver_config) do |kvs|
265
- kvs.add_sorted_set('example', 'element', 10)
266
-
267
- expect(kvs.sorted_sets.has_member?('example','element')).to be_true
268
- expect(kvs.sorted_sets.has_member?('example','nothing member')).to be_false
269
- expect(kvs.sorted_sets.has_member?('nothing key', 'element')).to be_false
250
+ expect(kvs.sorted_sets.length).to eq(1)
270
251
  end
271
252
  end
272
253
 
273
- it 'call increment' do
274
- driver_class::session(driver_config) do |kvs|
275
- kvs.add_sorted_set('example', 'element', 10)
276
254
 
277
- expect{kvs.sorted_sets.increment('example','element', 1)}.to change{kvs.sorted_sets['example','element']}.by(1)
278
- expect{kvs.sorted_sets.increment('example','element', -1)}.to change{kvs.sorted_sets['example','element']}.by(-1)
255
+ context 'sorted_set' do
256
+ it 'call []' do
257
+ driver_class::session(driver_config) do |kvs|
258
+ expect(kvs.sorted_sets['anime']['nyaruko']).to eq(1024)
259
+ end
279
260
  end
280
- end
281
261
 
282
- it 'call keys' do
283
- driver_class::session(driver_config) do |kvs|
284
- kvs.add_sorted_set('example', 'element', 10)
285
- kvs.add_sorted_set('example2', 'element', 1)
262
+ it 'call []=' do
263
+ driver_class::session(driver_config) do |kvs|
264
+ expect{
265
+ kvs.sorted_sets['manga']['dragonball'] = 1
266
+ }.to change{
267
+ kvs.sorted_sets['manga'].length
268
+ }.by(1)
269
+
270
+ expect{
271
+ kvs.sorted_sets['anime']['nonnonbiyori'] = 1
272
+ }.to change{
273
+ kvs.sorted_sets['anime'].length
274
+ }.by(1)
275
+ end
276
+ end
286
277
 
287
- expect(kvs.sorted_sets.keys.length).to eq(2)
278
+ it 'call each' do
279
+ driver_class::session(driver_config) do |kvs|
280
+ kvs.sorted_sets['anime'].each do |member, score, position|
281
+ expect(kvs.sorted_sets['anime'][member]).to eq(score)
282
+ end
283
+ end
284
+ end
285
+
286
+ it 'call has_member?' do
287
+ driver_class::session(driver_config) do |kvs|
288
+ expect(kvs.sorted_sets['anime'].has_member?('nyaruko')).to be_true
289
+ expect(kvs.sorted_sets['anime'].has_member?('noting member')).to be_false
290
+ end
288
291
  end
289
- end
290
292
 
291
- it 'call length' do
292
- driver_class::session(driver_config) do |kvs|
293
- kvs.add_sorted_set('example', 'element', 10)
294
- kvs.add_sorted_set('example2', 'element', 1)
295
293
 
296
- expect(kvs.sorted_sets.length).to eq(2)
294
+ it 'call increment' do
295
+ driver_class::session(driver_config) do |kvs|
296
+ expect{kvs.sorted_sets['anime'].increment('nyaruko', 1)}.to change{kvs.sorted_sets['anime']['nyaruko']}.by(1)
297
+ expect{kvs.sorted_sets['anime'].increment('nyaruko', -1)}.to change{kvs.sorted_sets['anime']['nyaruko']}.by(-1)
298
+ end
297
299
  end
298
- end
299
300
 
300
- it 'call remove' do
301
- driver_class::session(driver_config) do |kvs|
302
- kvs.add_sorted_set('example', 'element', 10)
303
- kvs.add_sorted_set('example', 'element', 1)
301
+ it 'call length' do
302
+ driver_class::session(driver_config) do |kvs|
303
+ expect(kvs.sorted_sets['anime'].length).to eq(2)
304
+ end
305
+ end
304
306
 
305
- expect{kvs.sorted_sets.remove('example', 'element')}.to change{kvs.sorted_sets.count('example')}.by(-1)
307
+ it 'call members' do
308
+ driver_class::session(driver_config) do |kvs|
309
+ expect(kvs.sorted_sets['anime'].members.length).to eq(2)
310
+ end
311
+ end
312
+
313
+ it 'call remove' do
314
+ driver_class::session(driver_config) do |kvs|
315
+ expect{
316
+ kvs.sorted_sets['anime'].remove('haganai')
317
+ }.to change{
318
+ kvs.sorted_sets['anime'].length
319
+ }.by(-1)
320
+ end
306
321
  end
322
+
307
323
  end
324
+
308
325
  end
309
326
  end
310
327
  end
@@ -28,6 +28,10 @@ describe RailsKvsDriver::DefinedBaseMethod do
28
28
  })
29
29
  end
30
30
 
31
+ it 'call methods of Enumerable' do
32
+ expect(@instance.count).to eq(3)
33
+ end
34
+
31
35
  it 'call each' do
32
36
  count = 0
33
37
  expect{
@@ -37,6 +41,10 @@ describe RailsKvsDriver::DefinedBaseMethod do
37
41
  }.to change{count}.by(3)
38
42
  end
39
43
 
44
+ it 'call empty?' do
45
+ expect(@instance.empty?).to be_false
46
+ end
47
+
40
48
  it 'call has_key?' do
41
49
  expect(@instance.has_key?(:a)).to be_true
42
50
  end
@@ -44,5 +52,9 @@ describe RailsKvsDriver::DefinedBaseMethod do
44
52
  it 'call length' do
45
53
  expect(@instance.length).to eq(3)
46
54
  end
55
+
56
+ it 'call size' do
57
+ expect(@instance.size).to eq(3)
58
+ end
47
59
  end
48
60
  end
@@ -0,0 +1,57 @@
1
+ require 'rspec'
2
+ require 'spec_helper'
3
+
4
+ describe RailsKvsDriver::Lists::List do
5
+
6
+ before(:each) do
7
+ @driver = MockDriver.new(nil,nil)
8
+ @driver.stub({
9
+ count_list_value: 100,
10
+ delete: true,
11
+ delete_list_value: true,
12
+ delete_list_value_at: true,
13
+ get_list_keys: [:a,:b,:c],
14
+ get_list_value: 'Nyarukosan',
15
+ get_list_values: [:Nyarukosan],
16
+ push_list_first: 5,
17
+ push_list_last: 5,
18
+ pop_list_first: 'Nyarukosan',
19
+ pop_list_last: 'Nyarukosan',
20
+ set_list_value: ''
21
+ })
22
+ end
23
+
24
+ it 'call []' do
25
+ expect((@driver.lists[:key][:list_key]).instance_of?(String)).to be_true
26
+ end
27
+
28
+ it 'call []=' do
29
+ expect(@driver.lists[:key][:list_key] = 'hogehoge').to eq('hogehoge')
30
+ end
31
+
32
+ it 'call delete' do
33
+ expect(@driver.lists[:key].delete(:a)).to be_true
34
+ end
35
+
36
+ it 'call delete_at' do
37
+ expect(@driver.lists[:key].delete(1)).to be_true
38
+ end
39
+
40
+ it 'call each' do
41
+ count = 0
42
+ expect{
43
+ @driver.lists[:key].each do |key|
44
+ count += 1
45
+ end
46
+ }.to change{count}.by(100)
47
+ end
48
+
49
+ it 'call length' do
50
+ expect(@driver.lists[:key].length).to eq(100)
51
+ end
52
+
53
+ it 'call size' do
54
+ expect(@driver.lists[:key].size).to eq(100)
55
+ end
56
+
57
+ end
@@ -0,0 +1,65 @@
1
+ require 'rspec'
2
+ require 'spec_helper'
3
+
4
+ describe RailsKvsDriver::Lists::Lists do
5
+
6
+ before(:each) do
7
+ @driver = MockDriver.new(nil,nil)
8
+ @driver.stub({
9
+ count_list_value: 100,
10
+ delete: true,
11
+ delete_list_value: true,
12
+ delete_list_value_at: true,
13
+ get_list_keys: [:a,:b,:c],
14
+ get_list_value: 'Nyarukosan',
15
+ push_list_first: 5,
16
+ push_list_last: 5,
17
+ pop_list_first: 'Nyarukosan',
18
+ pop_list_last: 'Nyarukosan',
19
+ set_list_value: ''
20
+ })
21
+ end
22
+
23
+ it 'call methods of Enumerable' do
24
+ expect(@driver.lists.count).to eq(3)
25
+ end
26
+
27
+ it 'call []' do
28
+ expect((@driver.lists[:key]).instance_of?(RailsKvsDriver::Lists::List)).to be_true
29
+ end
30
+
31
+ it 'call []=' do
32
+ sorted_set = [:a,:b,:c]
33
+ expect(@driver.lists[:key] = sorted_set).to eq(sorted_set)
34
+ end
35
+
36
+ it 'call delete' do
37
+ expect(@driver.lists.delete(:a)).to be_true
38
+ end
39
+
40
+ it 'call each' do
41
+ count = 0
42
+ expect{
43
+ @driver.lists.each do |key|
44
+ count += 1
45
+ end
46
+ }.to change{count}.by(3)
47
+ end
48
+
49
+ it 'call has_key?' do
50
+ expect(@driver.lists.has_key?(:a)).to be_true
51
+ end
52
+
53
+ it 'call keys' do
54
+ expect(@driver.lists.keys.length).to eq(3)
55
+ end
56
+
57
+ it 'call length' do
58
+ expect(@driver.lists.length).to eq(3)
59
+ end
60
+
61
+ it 'call size' do
62
+ expect(@driver.lists.size).to eq(3)
63
+ end
64
+
65
+ end
@@ -17,12 +17,16 @@ describe RailsKvsDriver::SortedSets::SortedSet do
17
17
  })
18
18
  end
19
19
 
20
+ it 'call methods of Enumerable' do
21
+ expect(@driver.sorted_sets[:key].count).to eq(100)
22
+ end
23
+
20
24
  it 'call []' do
21
- expect(@driver.sorted_sets[:key][:member] = 1).to eq(1)
25
+ expect(@driver.sorted_sets[:key][:member]).to eq(100)
22
26
  end
23
27
 
24
28
  it 'call []=' do
25
- expect(@driver.sorted_sets[:key][:member]).to eq(100)
29
+ expect(@driver.sorted_sets[:key][:member] = 1).to eq(1)
26
30
  end
27
31
 
28
32
  it 'call length' do
@@ -47,6 +51,10 @@ describe RailsKvsDriver::SortedSets::SortedSet do
47
51
  expect( @driver.sorted_sets[:key].increment(:b, 1) ).to eq(10)
48
52
  end
49
53
 
54
+ it 'call decrement' do
55
+ expect( @driver.sorted_sets[:key].decrement(:b, 1) ).to eq(10)
56
+ end
57
+
50
58
  it 'call length' do
51
59
  expect(@driver.sorted_sets[:key].length).to eq(100)
52
60
  end
@@ -58,4 +66,9 @@ describe RailsKvsDriver::SortedSets::SortedSet do
58
66
  it 'call remove' do
59
67
  expect(@driver.sorted_sets[:key].remove(:b)).to be_true
60
68
  end
69
+
70
+ it 'call size' do
71
+ expect(@driver.sorted_sets[:key].size).to eq(100)
72
+ end
73
+
61
74
  end
@@ -17,13 +17,17 @@ describe RailsKvsDriver::SortedSets::SortedSets do
17
17
  })
18
18
  end
19
19
 
20
+ it 'call methods of Enumerable' do
21
+ expect(@driver.sorted_sets.count).to eq(3)
22
+ end
23
+
20
24
  it 'call []' do
21
- sorted_set = [['member', 1],['member', 2]]
22
- expect(@driver.sorted_sets[:key] = sorted_set).to eq(sorted_set)
25
+ expect((@driver.sorted_sets[:key]).instance_of?(RailsKvsDriver::SortedSets::SortedSet)).to be_true
23
26
  end
24
27
 
25
28
  it 'call []=' do
26
- expect((@driver.sorted_sets[:key]).instance_of?(RailsKvsDriver::SortedSets::SortedSet)).to be_true
29
+ sorted_set = [['member', 1],['member', 2]]
30
+ expect(@driver.sorted_sets[:key] = sorted_set).to eq(sorted_set)
27
31
  end
28
32
 
29
33
  it 'call delete' do
@@ -51,4 +55,8 @@ describe RailsKvsDriver::SortedSets::SortedSets do
51
55
  expect(@driver.sorted_sets.length).to eq(3)
52
56
  end
53
57
 
58
+ it 'call size' do
59
+ expect(@driver.sorted_sets.size).to eq(3)
60
+ end
61
+
54
62
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_kvs_driver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - alfa-jpn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-13 00:00:00.000000000 Z
11
+ date: 2013-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,7 +94,10 @@ files:
94
94
  - README.md
95
95
  - Rakefile
96
96
  - lib/rails_kvs_driver.rb
97
+ - lib/rails_kvs_driver/common_methods/listable.rb
97
98
  - lib/rails_kvs_driver/defined_base_method.rb
99
+ - lib/rails_kvs_driver/lists/list.rb
100
+ - lib/rails_kvs_driver/lists/lists.rb
98
101
  - lib/rails_kvs_driver/session.rb
99
102
  - lib/rails_kvs_driver/sorted_sets/sorted_set.rb
100
103
  - lib/rails_kvs_driver/sorted_sets/sorted_sets.rb
@@ -103,6 +106,8 @@ files:
103
106
  - rails_kvs_driver.gemspec
104
107
  - spec/common_example.rb
105
108
  - spec/rails_kvs_driver/defined_base_method_spec.rb
109
+ - spec/rails_kvs_driver/lists/list_spec.rb
110
+ - spec/rails_kvs_driver/lists/lists_spec.rb
106
111
  - spec/rails_kvs_driver/session_spec.rb
107
112
  - spec/rails_kvs_driver/sorted_sets/sorted_set_spec.rb
108
113
  - spec/rails_kvs_driver/sorted_sets/sorted_sets_spec.rb
@@ -137,6 +142,8 @@ summary: rails_kvs_driver is available to use namespace and connection pool and
137
142
  test_files:
138
143
  - spec/common_example.rb
139
144
  - spec/rails_kvs_driver/defined_base_method_spec.rb
145
+ - spec/rails_kvs_driver/lists/list_spec.rb
146
+ - spec/rails_kvs_driver/lists/lists_spec.rb
140
147
  - spec/rails_kvs_driver/session_spec.rb
141
148
  - spec/rails_kvs_driver/sorted_sets/sorted_set_spec.rb
142
149
  - spec/rails_kvs_driver/sorted_sets/sorted_sets_spec.rb