Skip to content

Commit 66d63ef

Browse files
authored
Add sample to set (#100)
1 parent 1c2e3a6 commit 66d63ef

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

lib/kredis/types/set.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
class Kredis::Types::Set < Kredis::Types::Proxying
2-
proxying :smembers, :sadd, :srem, :multi, :del, :sismember, :scard, :spop, :exists?
2+
proxying :smembers, :sadd, :srem, :multi, :del, :sismember, :scard, :spop, :exists?, :srandmember
33

44
attr_accessor :typed
55

@@ -39,4 +39,12 @@ def take
3939
def clear
4040
del
4141
end
42+
43+
def sample(count = nil)
44+
if count.nil?
45+
string_to_type(srandmember(count), typed)
46+
else
47+
strings_to_types(srandmember(count), typed)
48+
end
49+
end
4250
end

test/types/set_test.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,4 +88,12 @@ class SetTest < ActiveSupport::TestCase
8888
@set.add(%w[ 1 2 3 ])
8989
assert @set.exists?
9090
end
91+
92+
test "srandmember" do
93+
@set = Kredis.set "mylist", typed: :float
94+
@set.add 1.5, 2.7
95+
96+
assert @set.sample.in?([ 1.5, 2.7 ])
97+
assert_equal [ 1.5, 2.7 ], @set.sample(2).sort
98+
end
9199
end

0 commit comments

Comments
 (0)