rediska 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f86c134332ab9cf5217916caadf33c173e95c2ba
4
+ data.tar.gz: 6237f5b3dbc747d40294e4e93ba933afd687b78c
5
+ SHA512:
6
+ metadata.gz: c73bfe01ede94fdaa21c058d20723c19367c4cd23ecb3a4d30032e758c395def2eabe115f00927aede66f835a9b448b5708f6ad7067dc671182adc390173b2cd
7
+ data.tar.gz: d17031c7ac9a702dfce106bbceaa777bd1a7a4dc94c889e35fb8f65a32222b761670984bcb785a3d993543000a8646721c2b7988c560efb03fc92a614aa6a33a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rediska (0.0.7)
4
+ rediska (0.0.8)
5
5
  redis (~> 3.0.0)
6
6
 
7
7
  GEM
@@ -13,32 +13,34 @@ GEM
13
13
  simplecov (>= 0.7)
14
14
  term-ansicolor
15
15
  thor
16
- diff-lcs (1.2.4)
16
+ diff-lcs (1.2.5)
17
+ docile (1.1.3)
17
18
  json (1.8.1)
18
- mime-types (1.25)
19
- multi_json (1.8.2)
20
- rake (10.1.1)
21
- rdoc (4.0.1)
19
+ mime-types (2.2)
20
+ multi_json (1.9.2)
21
+ rake (10.2.2)
22
+ rdoc (4.1.1)
22
23
  json (~> 1.4)
23
- redis (3.0.6)
24
+ redis (3.0.7)
24
25
  rest-client (1.6.7)
25
26
  mime-types (>= 1.16)
26
27
  rspec (2.14.1)
27
28
  rspec-core (~> 2.14.0)
28
29
  rspec-expectations (~> 2.14.0)
29
30
  rspec-mocks (~> 2.14.0)
30
- rspec-core (2.14.6)
31
- rspec-expectations (2.14.3)
31
+ rspec-core (2.14.8)
32
+ rspec-expectations (2.14.5)
32
33
  diff-lcs (>= 1.1.3, < 2.0)
33
- rspec-mocks (2.14.4)
34
- simplecov (0.7.1)
35
- multi_json (~> 1.0)
36
- simplecov-html (~> 0.7.1)
37
- simplecov-html (0.7.1)
38
- term-ansicolor (1.2.2)
39
- tins (~> 0.8)
40
- thor (0.18.1)
41
- tins (0.11.0)
34
+ rspec-mocks (2.14.6)
35
+ simplecov (0.8.2)
36
+ docile (~> 1.1.0)
37
+ multi_json
38
+ simplecov-html (~> 0.8.0)
39
+ simplecov-html (0.8.0)
40
+ term-ansicolor (1.3.0)
41
+ tins (~> 1.0)
42
+ thor (0.19.1)
43
+ tins (1.0.1)
42
44
 
43
45
  PLATFORMS
44
46
  ruby
data/Rakefile CHANGED
@@ -3,5 +3,6 @@ require 'bundler/gem_tasks'
3
3
  require 'rspec/core/rake_task'
4
4
 
5
5
  RSpec::Core::RakeTask.new('spec')
6
+ Bundler::GemHelper.install_tasks
6
7
 
7
8
  task :default => :spec
@@ -415,10 +415,8 @@ module Rediska
415
415
  data[destination] = ::Set.new(result)
416
416
  end
417
417
 
418
- def srandmember(key)
419
- data_type_check(key, ::Set)
420
- return nil unless data[key]
421
- data[key].to_a[rand(data[key].size)]
418
+ def srandmember(key, number = nil)
419
+ number.nil? ? srandmember_single(key) : srandmember_multiple(key, number)
422
420
  end
423
421
 
424
422
  def del(*keys)
@@ -923,5 +921,20 @@ module Rediska
923
921
  def mapped_param? param
924
922
  param.size == 1 && param[0].is_a?(Array)
925
923
  end
924
+
925
+ def srandmember_single(key)
926
+ data_type_check(key, ::Set)
927
+ return nil unless data[key]
928
+ data[key].to_a[rand(data[key].size)]
929
+ end
930
+
931
+ def srandmember_multiple(key, number)
932
+ return [] unless data[key]
933
+ if number >= 0
934
+ data[key].to_a.sample(number)
935
+ else
936
+ (1..-number).map { data[key].to_a[rand(data[key].size)] }.flatten
937
+ end
938
+ end
926
939
  end
927
940
  end
@@ -1,3 +1,3 @@
1
1
  module Rediska
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.8'.freeze
3
3
  end
data/spec/support/sets.rb CHANGED
@@ -178,4 +178,80 @@ shared_examples 'sets' do
178
178
 
179
179
  subject.smembers('key').should =~ ['a', 'b', 'c', 'd', 'e']
180
180
  end
181
+
182
+ describe 'srandmember' do
183
+ before(:each) do
184
+ @client = Redis.new
185
+ end
186
+
187
+ context 'with a set that has three elements' do
188
+ before do
189
+ subject.sadd('key1', 'a')
190
+ subject.sadd('key1', 'b')
191
+ subject.sadd('key1', 'c')
192
+ end
193
+
194
+ context 'when called without the optional number parameter' do
195
+ it 'is a random element from the set' do
196
+ random_element = subject.srandmember('key1')
197
+
198
+ ['a', 'b', 'c'].should include(random_element)
199
+ end
200
+ end
201
+
202
+ context 'when called with the optional number parameter of 1' do
203
+ it 'is an array of one random element from the set' do
204
+ subject.srandmember('key1', 1)
205
+
206
+ [['a'], ['b'], ['c']].should include(subject.srandmember('key1', 1))
207
+ end
208
+ end
209
+
210
+ context 'when called with the optional number parameter of 2' do
211
+ it 'is an array of two unique, random elements from the set' do
212
+ random_elements = subject.srandmember('key1', 2)
213
+
214
+ random_elements.should have(2).items
215
+ random_elements.uniq.should have(2).items
216
+ random_elements.all? do |element|
217
+ ['a', 'b', 'c'].should include(element)
218
+ end
219
+ end
220
+ end
221
+
222
+ context 'when called with an optional parameter of -100' do
223
+ it 'is an array of 100 random elements from the set, some of which are repeated' do
224
+ random_elements = subject.srandmember('key1', -100)
225
+
226
+ random_elements.should have(100).items
227
+ random_elements.uniq.should have_at_most(3).items
228
+ random_elements.all? do |element|
229
+ ['a', 'b', 'c'].should include(element)
230
+ end
231
+ end
232
+ end
233
+
234
+ context 'when called with an optional parameter of 100' do
235
+ it 'is an array of all of the elements from the set, none of which are repeated' do
236
+ random_elements = subject.srandmember('key1', 100)
237
+
238
+ random_elements.should have(3).items
239
+ random_elements.uniq.should have(3).items
240
+ random_elements.should =~ ['a', 'b', 'c']
241
+ end
242
+ end
243
+ end
244
+
245
+ context 'with an empty set' do
246
+ before { subject.del('key1') }
247
+
248
+ it 'is nil without the extra parameter' do
249
+ subject.srandmember('key1').should be_nil
250
+ end
251
+
252
+ it 'is an empty array with an extra parameter' do
253
+ subject.srandmember('key1', 1).should == []
254
+ end
255
+ end
256
+ end
181
257
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rediska
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
5
- prerelease:
4
+ version: 0.0.8
6
5
  platform: ruby
7
6
  authors:
8
7
  - Leonid Beder
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-01-11 00:00:00.000000000 Z
11
+ date: 2014-04-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: redis
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rspec
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,37 +41,34 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: coveralls
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rake
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
- description: ! "A light-weighted redis driver for testing, development, and minimal
79
- environments,\n which supports various data storage strategies."
69
+ description: |-
70
+ A light-weighted redis driver for testing, development, and minimal environments,
71
+ which supports various data storage strategies.
80
72
  email:
81
73
  - leonid.beder@gmail.com
82
74
  executables: []
@@ -119,27 +111,26 @@ files:
119
111
  homepage: https://github.com/lbeder/rediska
120
112
  licenses:
121
113
  - MIT
114
+ metadata: {}
122
115
  post_install_message:
123
116
  rdoc_options: []
124
117
  require_paths:
125
118
  - lib
126
119
  required_ruby_version: !ruby/object:Gem::Requirement
127
- none: false
128
120
  requirements:
129
- - - ! '>='
121
+ - - '>='
130
122
  - !ruby/object:Gem::Version
131
123
  version: '0'
132
124
  required_rubygems_version: !ruby/object:Gem::Requirement
133
- none: false
134
125
  requirements:
135
- - - ! '>='
126
+ - - '>='
136
127
  - !ruby/object:Gem::Version
137
128
  version: '0'
138
129
  requirements: []
139
130
  rubyforge_project:
140
- rubygems_version: 1.8.25
131
+ rubygems_version: 2.2.2
141
132
  signing_key:
142
- specification_version: 3
133
+ specification_version: 4
143
134
  summary: A light-weighted redis driver for testing, development, and minimal environments
144
135
  test_files:
145
136
  - spec/redis_spec.rb
@@ -155,4 +146,3 @@ test_files:
155
146
  - spec/support/strings.rb
156
147
  - spec/support/transactions.rb
157
148
  - spec/support/upcase_method_names.rb
158
- has_rdoc: