ccp 0.3.5 → 0.4.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,43 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Ccp::Kvs do
5
+
6
+ specify ".load" do
7
+ Ccp::Kvs.should respond_to(:load)
8
+ end
9
+
10
+ ######################################################################
11
+ ### Unknown case
12
+
13
+ context "(unknown codec)" do
14
+ specify do
15
+ expect{ Ccp::Kvs.load("foo.xxx.tch") }.to raise_error(/xxx/)
16
+ end
17
+ end
18
+
19
+ context "(unknown ext)" do
20
+ specify do
21
+ expect{ Ccp::Kvs.load("foo.json.yyy") }.to raise_error(/yyy/)
22
+ end
23
+ end
24
+
25
+ ######################################################################
26
+ ### Usally case
27
+
28
+ codecs = %w( json msgpack )
29
+ exts = %w( tch kch )
30
+
31
+ codecs.product(exts).each do |codec, ext|
32
+ file = "foo.#{codec}.#{ext}"
33
+
34
+ context "(#{file})" do
35
+ subject { Ccp::Kvs.load(file) }
36
+
37
+ it { should be_kind_of(Ccp::Kvs::Core) }
38
+ its(:source) { should == file }
39
+ its(:ext) { should == ext }
40
+ it { subject.codec.ext.should == codec }
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,33 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ codecs = %w( json msgpack )
5
+ exts = %w( tch kch )
6
+
7
+ codecs.product(exts).each do |codec, ext|
8
+ klass = Ccp::Kvs[ext]
9
+ describe "#{klass}(#{codec})" do
10
+ before { FileUtils.rm_rf(tmp_path) if tmp_path.directory? }
11
+ let(:kvs) { klass.new(tmp_path + "kvs.#{ext}") }
12
+
13
+ before {
14
+ kvs.codec!(codec)
15
+ kvs.touch
16
+ }
17
+
18
+ specify do
19
+ kvs.set("1", {"mc"=>-1, "mi"=>0, "mr"=>-1.0, "tc"=>-1, "ti"=>-1, "tr"=>-1.0})
20
+ kvs.get("1").should == {"mc"=>-1, "mi"=>0, "mr"=>-1.0, "tc"=>-1, "ti"=>-1, "tr"=>-1.0}
21
+ end
22
+
23
+ specify do
24
+ kvs.set("2", [1,2,3])
25
+ kvs.get("2").should == [1,2,3]
26
+ end
27
+
28
+ specify do
29
+ kvs.set("2", [1,2,3])
30
+ kvs.first.should == ["2", [1,2,3]]
31
+ end
32
+ end
33
+ end
@@ -1,6 +1,6 @@
1
1
  module Breadcrumbing
2
2
  def this
3
- "%s#%s" % [self.class.name, caller[0].to_s.scan(/`(.*?)'/).first]
3
+ "%s#%s" % [self.class.name, caller[0].to_s.scan(/`(.*?)'/).first.first]
4
4
  end
5
5
  end
6
6
 
@@ -29,6 +29,13 @@ describe Ccp::Storage do
29
29
  its(:codec) { should == Ccp::Serializers::Msgpack }
30
30
  end
31
31
 
32
+ context "('tmp/foo.msgpack.kch')" do
33
+ subject { Ccp::Storage.load('tmp/foo.msgpack.kch') }
34
+ its(:source) { should == 'tmp/foo.msgpack.kch' }
35
+ its(:kvs) { should be_kind_of(Ccp::Kvs::Kch) }
36
+ its(:codec) { should == Ccp::Serializers::Msgpack }
37
+ end
38
+
32
39
  context "(pathname)" do
33
40
  subject { Ccp::Storage.load(Pathname('tmp/foo.msgpack.tch')) }
34
41
  its(:source) { should == Pathname('tmp/foo.msgpack.tch') }
@@ -0,0 +1,36 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ codecs = %w( json msgpack )
5
+ exts = %w( tch kch )
6
+
7
+ codecs.product(exts).each do |codec, ext|
8
+ dir = "foo.#{codec}.#{ext}"
9
+ describe "Ccp::Storage.load('#{dir}')" do
10
+ before { FileUtils.rm_rf(tmp_path) if tmp_path.directory? }
11
+ let(:storage) { Ccp::Storage.load(tmp_path + dir) }
12
+
13
+ context "(table)" do
14
+ let(:path) { tmp_path + dir + "user/budget.#{codec}.#{ext}" }
15
+ let(:kvs) { storage.table("user/budget") }
16
+
17
+ before { path.exist?.should == false } # no file exists
18
+
19
+ specify "touch creates file" do
20
+ kvs.touch
21
+ path.exist?.should == true
22
+ end
23
+
24
+ specify "dump and load" do
25
+ kvs["1"] = 100
26
+ kvs["2"] = "test"
27
+ kvs["3"] = [1,2,3]
28
+ kvs["4"] = {"mc"=>-1, "mi"=>0, "mr"=>-1.0, "tc"=>-1, "ti"=>-1, "tr"=>-1.0}
29
+ kvs.del("2")
30
+
31
+ kvs.count.should == 3
32
+ kvs.get("3").should == [1,2,3]
33
+ end
34
+ end
35
+ end
36
+ end
metadata CHANGED
@@ -1,169 +1,183 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ccp
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 3
9
- - 5
10
- version: 0.3.5
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - maiha
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2013-10-29 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-11-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: activesupport
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 15
29
- segments:
30
- - 3
31
- - 2
32
- - 0
33
- version: 3.2.0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
34
22
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: typed
38
23
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
40
25
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 19
45
- segments:
46
- - 0
47
- - 2
48
- - 2
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: typed
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
49
37
  version: 0.2.2
50
38
  type: :runtime
51
- version_requirements: *id002
52
- - !ruby/object:Gem::Dependency
53
- name: must
54
39
  prerelease: false
55
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
56
41
  none: false
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- hash: 19
61
- segments:
62
- - 0
63
- - 3
64
- - 0
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.2.2
46
+ - !ruby/object:Gem::Dependency
47
+ name: must
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
65
53
  version: 0.3.0
66
54
  type: :runtime
67
- version_requirements: *id003
68
- - !ruby/object:Gem::Dependency
69
- name: dsl_accessor
70
55
  prerelease: false
71
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
72
57
  none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 13
77
- segments:
78
- - 0
79
- - 4
80
- - 1
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.3.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: dsl_accessor
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
81
69
  version: 0.4.1
82
70
  type: :runtime
83
- version_requirements: *id004
84
- - !ruby/object:Gem::Dependency
85
- name: json
86
71
  prerelease: false
87
- requirement: &id005 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 0.4.1
78
+ - !ruby/object:Gem::Dependency
79
+ name: json
80
+ requirement: !ruby/object:Gem::Requirement
88
81
  none: false
89
- requirements:
90
- - - ">="
91
- - !ruby/object:Gem::Version
92
- hash: 3
93
- segments:
94
- - 0
95
- version: "0"
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
96
86
  type: :runtime
97
- version_requirements: *id005
98
- - !ruby/object:Gem::Dependency
99
- name: yajl-ruby
100
87
  prerelease: false
101
- requirement: &id006 !ruby/object:Gem::Requirement
88
+ version_requirements: !ruby/object:Gem::Requirement
102
89
  none: false
103
- requirements:
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- hash: 3
107
- segments:
108
- - 0
109
- version: "0"
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: yajl-ruby
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
110
102
  type: :runtime
111
- version_requirements: *id006
112
- - !ruby/object:Gem::Dependency
113
- name: msgpack
114
103
  prerelease: false
115
- requirement: &id007 !ruby/object:Gem::Requirement
104
+ version_requirements: !ruby/object:Gem::Requirement
116
105
  none: false
117
- requirements:
118
- - - ">"
119
- - !ruby/object:Gem::Version
120
- hash: 3
121
- segments:
122
- - 0
123
- - 4
124
- version: "0.4"
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: msgpack
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>'
116
+ - !ruby/object:Gem::Version
117
+ version: '0.4'
125
118
  type: :runtime
126
- version_requirements: *id007
127
- - !ruby/object:Gem::Dependency
128
- name: tokyocabinet
129
119
  prerelease: false
130
- requirement: &id008 !ruby/object:Gem::Requirement
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>'
124
+ - !ruby/object:Gem::Version
125
+ version: '0.4'
126
+ - !ruby/object:Gem::Dependency
127
+ name: rspec
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: tokyocabinet
144
+ requirement: !ruby/object:Gem::Requirement
131
145
  none: false
132
- requirements:
146
+ requirements:
133
147
  - - ~>
134
- - !ruby/object:Gem::Version
135
- hash: 97
136
- segments:
137
- - 1
138
- - 29
139
- - 1
148
+ - !ruby/object:Gem::Version
140
149
  version: 1.29.1
141
- type: :runtime
142
- version_requirements: *id008
143
- - !ruby/object:Gem::Dependency
144
- name: rspec
150
+ type: :development
145
151
  prerelease: false
146
- requirement: &id009 !ruby/object:Gem::Requirement
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ~>
156
+ - !ruby/object:Gem::Version
157
+ version: 1.29.1
158
+ - !ruby/object:Gem::Dependency
159
+ name: kyotocabinet-ruby
160
+ requirement: !ruby/object:Gem::Requirement
147
161
  none: false
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- hash: 3
152
- segments:
153
- - 0
154
- version: "0"
162
+ requirements:
163
+ - - ~>
164
+ - !ruby/object:Gem::Version
165
+ version: 1.27.1
155
166
  type: :development
156
- version_requirements: *id009
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: 1.27.1
157
174
  description: CCP
158
- email:
175
+ email:
159
176
  - maiha@wota.jp
160
177
  executables: []
161
-
162
178
  extensions: []
163
-
164
179
  extra_rdoc_files: []
165
-
166
- files:
180
+ files:
167
181
  - .gitignore
168
182
  - Gemfile
169
183
  - README.rdoc
@@ -189,6 +203,11 @@ files:
189
203
  - lib/ccp/kvs.rb
190
204
  - lib/ccp/kvs/core.rb
191
205
  - lib/ccp/kvs/hash.rb
206
+ - lib/ccp/kvs/kch.rb
207
+ - lib/ccp/kvs/kyoto.rb
208
+ - lib/ccp/kvs/kyoto/base.rb
209
+ - lib/ccp/kvs/kyoto/cabinet.rb
210
+ - lib/ccp/kvs/kyoto/state_machine.rb
192
211
  - lib/ccp/kvs/tch.rb
193
212
  - lib/ccp/kvs/tokyo.rb
194
213
  - lib/ccp/kvs/tokyo/base.rb
@@ -242,10 +261,14 @@ files:
242
261
  - spec/invokers/save_fixture_spec.rb
243
262
  - spec/invokers/spec_spec.rb
244
263
  - spec/kvs/core_spec.rb
264
+ - spec/kvs/enum_spec.rb
245
265
  - spec/kvs/kvs_spec.rb
266
+ - spec/kvs/kyoto/cabinet_spec.rb
267
+ - spec/kvs/load_spec.rb
246
268
  - spec/kvs/lookup_spec.rb
247
269
  - spec/kvs/tokyo/cabinet_spec.rb
248
270
  - spec/kvs/tokyo/info_spec.rb
271
+ - spec/kvs/usecase_spec.rb
249
272
  - spec/models.rb
250
273
  - spec/persistent/base_spec.rb
251
274
  - spec/persistent/dir_spec.rb
@@ -265,39 +288,31 @@ files:
265
288
  - spec/serializers/serializer_spec.rb
266
289
  - spec/spec_helper.rb
267
290
  - spec/storage/loadable_spec.rb
291
+ - spec/storage/usecase_spec.rb
268
292
  - spec/utils/colorize_spec.rb
269
293
  homepage: http://github.com/maiha/ccp
270
- licenses:
294
+ licenses:
271
295
  - MIT
272
296
  post_install_message:
273
297
  rdoc_options: []
274
-
275
- require_paths:
298
+ require_paths:
276
299
  - lib
277
- required_ruby_version: !ruby/object:Gem::Requirement
300
+ required_ruby_version: !ruby/object:Gem::Requirement
278
301
  none: false
279
- requirements:
280
- - - ">="
281
- - !ruby/object:Gem::Version
282
- hash: 3
283
- segments:
284
- - 0
285
- version: "0"
286
- required_rubygems_version: !ruby/object:Gem::Requirement
302
+ requirements:
303
+ - - ! '>='
304
+ - !ruby/object:Gem::Version
305
+ version: '0'
306
+ required_rubygems_version: !ruby/object:Gem::Requirement
287
307
  none: false
288
- requirements:
289
- - - ">="
290
- - !ruby/object:Gem::Version
291
- hash: 3
292
- segments:
293
- - 0
294
- version: "0"
308
+ requirements:
309
+ - - ! '>='
310
+ - !ruby/object:Gem::Version
311
+ version: '0'
295
312
  requirements: []
296
-
297
313
  rubyforge_project: ccp
298
- rubygems_version: 1.8.15
314
+ rubygems_version: 1.8.23
299
315
  signing_key:
300
316
  specification_version: 3
301
317
  summary: A Ruby library for Composite Command Programming
302
318
  test_files: []
303
-