ssdb 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,116 @@
1
+ require 'spec_helper'
2
+
3
+ describe SSDB do
4
+ describe "zsets" do
5
+
6
+ before do
7
+ subject.zset "#{FPX}:zset1", "a", 1
8
+ subject.zset "#{FPX}:zset1", "b", 2
9
+ subject.zset "#{FPX}:zset1", "c", 2.5
10
+ subject.zset "#{FPX}:zset1", "d", 3
11
+ subject.zset "#{FPX}:zset2", "xa", 100
12
+ subject.zset "#{FPX}:zset2", "xz", 200
13
+ subject.zset "#{FPX}:zset3", "za", 5
14
+ subject.zset "#{FPX}:zset3", "zz", 5
15
+ end
16
+
17
+ it "should check existence" do
18
+ subject.zexists?("#{FPX}:zset1").should be(true)
19
+ subject.zexists("#{FPX}:zset2").should be(true)
20
+ subject.zexists?("#{FPX}:zset9").should be(false)
21
+ end
22
+
23
+ it "should count" do
24
+ subject.zsize("#{FPX}:zset1").should == 4
25
+ subject.zsize("#{FPX}:zset2").should == 2
26
+ subject.zsize("#{FPX}:zset9").should == 0
27
+ end
28
+
29
+ it "should delete" do
30
+ -> {
31
+ subject.zdel("#{FPX}:zset1", "a").should be(true)
32
+ }.should change { subject.zsize("#{FPX}:zset1") }.by(-1)
33
+
34
+ -> {
35
+ subject.zdel("#{FPX}:zset1", "e").should be(false)
36
+ }.should_not change { subject.zsize("#{FPX}:zset1") }
37
+ end
38
+
39
+ it "should set/get scores" do
40
+ subject.zset("#{FPX}:zset9", "i", 50).should be(true)
41
+ subject.zset("#{FPX}:zset9", "i", 60).should be(false)
42
+ subject.zset("#{FPX}:zset9", "i", 60).should be(false)
43
+
44
+ subject.zget("#{FPX}:zset9", "i").should == 60
45
+ subject.zget("#{FPX}:zset1", "c").should == 2
46
+ subject.zget("#{FPX}:zset1", "x").should be_nil
47
+ subject.zget("#{FPX}:zsetX", "any").should be_nil
48
+ end
49
+
50
+ it "should 'add' scores" do
51
+ subject.zadd("#{FPX}:zset9", 50, "i").should be(true)
52
+ subject.zget("#{FPX}:zset9", "i").should == 50
53
+ end
54
+
55
+ it "should increment/decrement scores" do
56
+ subject.zincr("#{FPX}:zset1", "a", 7).should == 8
57
+ subject.zdecr("#{FPX}:zset1", "a", 3).should == 5
58
+ subject.zincr("#{FPX}:zset1", "a", 3.9).should == 8
59
+ subject.zdecr("#{FPX}:zset1", "a", 1.8).should == 7
60
+ subject.zincr("#{FPX}:zset1", "b", 1).should == 3
61
+
62
+ subject.zincr("#{FPX}:zset1", "e", 5).should == 5
63
+ subject.zget("#{FPX}:zset1", "e").should == 5
64
+ end
65
+
66
+ it "should list sets" do
67
+ subject.zlist("#{FPX}:zset1", "#{FPX}:zset3").should == ["#{FPX}:zset2", "#{FPX}:zset3"]
68
+ subject.zlist("#{FPX}:zset0", "#{FPX}:zsetz", limit: 2).should == ["#{FPX}:zset1", "#{FPX}:zset2"]
69
+ subject.zlist("#{FPX}:zsety", "#{FPX}:zsetz").should == []
70
+ subject.zlist("#{FPX}:zsetz", "#{FPX}:zset0").should == []
71
+ end
72
+
73
+ it "should scan scores" do
74
+ subject.zscan("#{FPX}:zset1", 0, 10).should == [["a", 1], ["b", 2], ["c", 2], ["d", 3]]
75
+ subject.zscan("#{FPX}:zset1", 2, 3).should == [["b", 2], ["c", 2]]
76
+ subject.zscan("#{FPX}:zset1", 2, 3, limit: 2).should == [["b", 2], ["c", 2]]
77
+ subject.zscan("#{FPX}:zset1", 3, 2).should == []
78
+ subject.zscan("#{FPX}:zset3", 0, 10).should == [["za", 5], ["zz", 5]]
79
+ subject.zscan("#{FPX}:zsety", 0, 100).should == []
80
+ end
81
+
82
+ it "should rscan scores" do
83
+ subject.zrscan("#{FPX}:zset2", 1000, 0).should == [["xz", 200], ["xa", 100]]
84
+ subject.zrscan("#{FPX}:zset2", 0, 1000).should == []
85
+ subject.zrscan("#{FPX}:zset2", 200, 100).should == [["xa", 100]]
86
+ end
87
+
88
+ it "should list score keys" do
89
+ subject.zkeys("#{FPX}:zset1", 0, 10).should == ["a", "b", "c", "d"]
90
+ subject.zkeys("#{FPX}:zset1", 10, 0).should == []
91
+ subject.zkeys("#{FPX}:zset3", 0, 10).should == ["za", "zz"]
92
+ end
93
+
94
+ it "should check existence of multiple sets" do
95
+ subject.multi_zexists(["#{FPX}:zset1", "#{FPX}:zset2", "#{FPX}:zset9"]).should == [true, true, false]
96
+ end
97
+
98
+ it "should check sizes of multiple sets" do
99
+ subject.multi_zsize(["#{FPX}:zset1", "#{FPX}:zset2", "#{FPX}:zset9"]).should == [4, 2, 0]
100
+ end
101
+
102
+ it "should get/set multiple members" do
103
+ subject.multi_zset("#{FPX}:zset5", {"k" => 7, "l" => 8}).should == 2
104
+ subject.multi_zget("#{FPX}:zset1", ["a", "d", "x"]).should == [1, 3, 0]
105
+ subject.multi_zget("#{FPX}:zset5", ["i", "k", "l"]).should == [0, 7, 8]
106
+ subject.multi_zget("#{FPX}:zset9", ["x", "y"]).should == [0, 0]
107
+ end
108
+
109
+ it "should delete multiple members" do
110
+ -> {
111
+ subject.multi_zdel("#{FPX}:zset1", ["a", "d", "x"]).should == 2
112
+ }.should change { subject.zsize("#{FPX}:zset1") }.by(-2)
113
+ end
114
+
115
+ end
116
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "ssdb/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "ssdb"
7
+ s.version = SSDB::VERSION.dup
8
+ s.platform = Gem::Platform::RUBY
9
+ s.licenses = ["MIT"]
10
+ s.summary = "A Ruby client library for SSDB"
11
+ s.email = "info@blacksquaremedia.com"
12
+ s.homepage = "http://github.com/bsm/ssdb-rb"
13
+ s.description = "Please see https://github.com/ideawu/ssdb/ for more information."
14
+ s.authors = ['Dimitrij Denissenko']
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- spec/*`.split("\n")
18
+ s.require_paths = ["lib"]
19
+
20
+ s.add_development_dependency("rspec")
21
+ s.add_development_dependency("rake")
22
+ s.add_development_dependency("bundler")
23
+ s.add_development_dependency("yard")
24
+ s.add_development_dependency("redcarpet")
25
+ end
metadata ADDED
@@ -0,0 +1,151 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ssdb
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - Dimitrij Denissenko
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-05-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ prerelease: false
16
+ type: :development
17
+ name: rspec
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
24
+ requirement: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ prerelease: false
32
+ type: :development
33
+ name: rake
34
+ version_requirements: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirement: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ prerelease: false
48
+ type: :development
49
+ name: bundler
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ requirement: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ prerelease: false
64
+ type: :development
65
+ name: yard
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirement: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ prerelease: false
80
+ type: :development
81
+ name: redcarpet
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ requirement: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: Please see https://github.com/ideawu/ssdb/ for more information.
95
+ email: info@blacksquaremedia.com
96
+ executables: []
97
+ extensions: []
98
+ extra_rdoc_files: []
99
+ files:
100
+ - .gitignore
101
+ - Gemfile
102
+ - Gemfile.lock
103
+ - README.md
104
+ - Rakefile
105
+ - lib/ssdb.rb
106
+ - lib/ssdb/batch.rb
107
+ - lib/ssdb/client.rb
108
+ - lib/ssdb/future.rb
109
+ - lib/ssdb/version.rb
110
+ - spec/spec_helper.rb
111
+ - spec/ssdb/batch_spec.rb
112
+ - spec/ssdb/client_spec.rb
113
+ - spec/ssdb/future_spec.rb
114
+ - spec/ssdb_spec.rb
115
+ - spec/types/values_spec.rb
116
+ - spec/types/zsets_spec.rb
117
+ - ssdb.gemspec
118
+ homepage: http://github.com/bsm/ssdb-rb
119
+ licenses:
120
+ - MIT
121
+ post_install_message:
122
+ rdoc_options: []
123
+ require_paths:
124
+ - lib
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ! '>='
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ! '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ requirements: []
138
+ rubyforge_project:
139
+ rubygems_version: 1.8.25
140
+ signing_key:
141
+ specification_version: 3
142
+ summary: A Ruby client library for SSDB
143
+ test_files:
144
+ - spec/spec_helper.rb
145
+ - spec/ssdb/batch_spec.rb
146
+ - spec/ssdb/client_spec.rb
147
+ - spec/ssdb/future_spec.rb
148
+ - spec/ssdb_spec.rb
149
+ - spec/types/values_spec.rb
150
+ - spec/types/zsets_spec.rb
151
+ has_rdoc: