ccp 0.3.5 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
-