doodle 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,32 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+ require 'yaml'
3
+
4
+ describe 'Doodle', 'readonly attributes' do
5
+ temporary_constant :Foo do
6
+ before :each do
7
+ class Foo < Doodle
8
+ has :ivar1, :readonly => true
9
+ end
10
+ end
11
+
12
+ it 'should allow setting readonly attribute during initialization' do
13
+ proc { Foo.new(:ivar1 => "hello") }.should_not raise_error
14
+ end
15
+
16
+ it 'should not allow setting readonly attribute after initialization' do
17
+ foo = Foo.new(:ivar1 => "hello")
18
+ foo.ivar1.should_be "hello"
19
+ proc { foo.ivar1 = "world"}.should raise_error(Doodle::ReadOnlyError)
20
+ end
21
+
22
+ it 'should not allow setting readonly attribute after initialization' do
23
+ foo = Foo do
24
+ ivar1 "hello"
25
+ end
26
+ foo.ivar1.should_be "hello"
27
+ proc { foo.ivar1 = "world"}.should raise_error(Doodle::ReadOnlyError)
28
+ end
29
+
30
+ end
31
+ end
32
+
@@ -8,8 +8,8 @@ describe Doodle, "singletons" do
8
8
  has :c1
9
9
  end
10
10
  end
11
- Foo.doodle.attributes.should_be OrderedHash.new
12
- Foo.singleton_class.doodle.attributes.should_not_be OrderedHash.new
11
+ Foo.doodle.attributes.should_be Doodle::OrderedHash.new
12
+ Foo.singleton_class.doodle.attributes.should_not_be Doodle::OrderedHash.new
13
13
  Foo.singleton_class.doodle.attributes.map{ |name, attr| name }.should_be [:c1]
14
14
  Foo.c1 = 1
15
15
  Foo.c1.should_be 1
@@ -22,8 +22,8 @@ describe Doodle, "singletons" do
22
22
  has :c2
23
23
  end
24
24
  end
25
- Foo.doodle.attributes.should_be OrderedHash.new
26
- Foo.singleton_class.doodle.attributes.should_not_be OrderedHash.new
25
+ Foo.doodle.attributes.should_be Doodle::OrderedHash.new
26
+ Foo.singleton_class.doodle.attributes.should_not_be Doodle::OrderedHash.new
27
27
  Foo.singleton_class.doodle.attributes.map{ |name, attr| name }.should_be [:c2]
28
28
  Foo.c2 = 1
29
29
  Foo.c2.should_be 1
@@ -37,7 +37,7 @@ describe Doodle, "singletons" do
37
37
  has :i1
38
38
  end
39
39
  foo.doodle.attributes.keys.should_be [:i1]
40
- foo.singleton_class.doodle.attributes.should_not_be OrderedHash.new
40
+ foo.singleton_class.doodle.attributes.should_not_be Doodle::OrderedHash.new
41
41
  foo.singleton_class.doodle.attributes.map{ |name, attr| name }.should_be [:i1]
42
42
  foo.i1 = 1
43
43
  foo.i1.should_be 1
@@ -53,8 +53,8 @@ describe Doodle, "singletons" do
53
53
  has :i2
54
54
  end
55
55
  end
56
- foo.doodle.attributes.should_be OrderedHash.new
57
- foo.singleton_class.singleton_class.doodle.attributes.should_not_be OrderedHash.new
56
+ foo.doodle.attributes.should_be Doodle::OrderedHash.new
57
+ foo.singleton_class.singleton_class.doodle.attributes.should_not_be Doodle::OrderedHash.new
58
58
  foo.singleton_class.singleton_class.doodle.attributes.map{ |name, attr| name }.should_be [:i2]
59
59
  foo.singleton_class.i2 = 1
60
60
  foo.singleton_class.i2.should_be 1
@@ -30,7 +30,7 @@ def undefine_const(*consts)
30
30
  end
31
31
 
32
32
  def raise_if_defined(*args)
33
- defined, undefined = args.partition{ |x| Object.const_defined?(x)}
33
+ defined = args.select{ |x| Object.const_defined?(x)}
34
34
  raise "Namespace pollution: #{defined.join(', ')}" if defined.size > 0
35
35
  end
36
36
 
@@ -0,0 +1,40 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+ require 'yaml'
3
+
4
+ describe Doodle::Utils, 'normalize_keys' do
5
+ sym_hash = {
6
+ :barn => {
7
+ :animals=>
8
+ [
9
+ {
10
+ :species=>"pig"
11
+ }
12
+ ]
13
+ }
14
+ }
15
+ string_hash = {
16
+ "barn" => {
17
+ "animals" =>
18
+ [
19
+ {
20
+ "species"=>"pig"
21
+ }
22
+ ]
23
+ }
24
+ }
25
+
26
+ args = [
27
+ { :input => [string_hash], :output => {:barn=>{"animals"=>[{"species"=>"pig"}]}} },
28
+ { :input => [sym_hash, false, :to_s], :output => {"barn"=>{:animals=>[{:species=>"pig"}]}}},
29
+ { :input => [string_hash, true, :to_sym], :output => sym_hash },
30
+ { :input => [sym_hash, true, :to_s], :output => string_hash },
31
+ ]
32
+
33
+ args.each do |arg|
34
+ it "should produce output #{arg[:output].inspect} from args #{arg[:input].inspect})" do
35
+ Doodle::Utils.normalize_keys(*arg[:input]).should == arg[:output]
36
+ end
37
+ end
38
+
39
+ end
40
+
@@ -0,0 +1,35 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+ require 'yaml'
3
+
4
+ describe 'Doodle', 'block initialization of scalar attributes' do
5
+ temporary_constant :Foo, :Bar, :Farm, :Barn, :Animal do
6
+ before :each do
7
+ class Animal < Doodle
8
+ has :species
9
+ end
10
+ class Barn < Doodle
11
+ has :animals, :collect => Animal
12
+ end
13
+ class Farm < Doodle
14
+ has Barn
15
+ end
16
+ class Foo < Doodle
17
+ has :ivar1, :kind => String
18
+ end
19
+ class Bar < Doodle
20
+ has :block, :kind => Proc
21
+ end
22
+ end
23
+
24
+ it 'should initialize an scalar attribute from a block' do
25
+ farm = Farm do
26
+ barn do
27
+ animal "pig"
28
+ end
29
+ end
30
+ farm.to_hash.should_be( {:barn=>{:animals=>[{:species=>"pig"}]}} )
31
+ farm.to_string_hash.should_be( {"barn"=>{"animals"=>[{"species"=>"pig"}]}} )
32
+ end
33
+ end
34
+ end
35
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doodle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean O'Halpin
@@ -9,10 +9,19 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-05-16 00:00:00 +01:00
12
+ date: 2008-12-15 00:00:00 +00:00
13
13
  default_executable:
14
- dependencies: []
15
-
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: hoe
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.8.0
24
+ version:
16
25
  description: "Doodle is a gem for simplifying the definition of Ruby classes by making attributes and their properties more declarative. Doodle is eco-friendly: it does not globally modify Object, Class or Module."
17
26
  email:
18
27
  - sean.ohalpin@gmail.com
@@ -26,6 +35,8 @@ extra_rdoc_files:
26
35
  - Manifest.txt
27
36
  - PostInstall.txt
28
37
  - README.txt
38
+ - examples/example-01.rdoc
39
+ - examples/example-02.rdoc
29
40
  files:
30
41
  - COPYING
31
42
  - CREDITS
@@ -52,6 +63,7 @@ files:
52
63
  - examples/yaml-example.rb
53
64
  - examples/yaml-example2.rb
54
65
  - lib/doodle.rb
66
+ - lib/doodle/app.rb
55
67
  - lib/doodle/datatypes.rb
56
68
  - lib/doodle/rfc822.rb
57
69
  - lib/doodle/utils.rb
@@ -117,35 +129,40 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
129
  requirements: []
118
130
 
119
131
  rubyforge_project: doodle
120
- rubygems_version: 1.1.1
132
+ rubygems_version: 1.3.1
121
133
  signing_key:
122
134
  specification_version: 2
123
135
  summary: "Doodle is a gem for simplifying the definition of Ruby classes by making attributes and their properties more declarative. Doodle is eco-friendly: it does not globally modify Object, Class or Module."
124
136
  test_files:
137
+ - spec/arg_order_spec.rb
138
+ - spec/attributes_spec.rb
139
+ - spec/block_init_spec.rb
125
140
  - spec/bugs_spec.rb
126
- - spec/specialized_attribute_class_spec.rb
141
+ - spec/class_spec.rb
142
+ - spec/class_validation_spec.rb
127
143
  - spec/class_var_spec.rb
128
- - spec/inheritance_spec.rb
144
+ - spec/collector_spec.rb
145
+ - spec/conversion_spec.rb
146
+ - spec/defaults_spec.rb
147
+ - spec/doodle_context_spec.rb
148
+ - spec/doodle_spec.rb
149
+ - spec/extra_args_spec.rb
129
150
  - spec/factory_spec.rb
130
151
  - spec/flatten_first_level_spec.rb
131
- - spec/new_doodle_spec.rb
132
- - spec/attributes_spec.rb
133
- - spec/kind_spec.rb
134
152
  - spec/from_spec.rb
135
- - spec/arg_order_spec.rb
153
+ - spec/has_spec.rb
154
+ - spec/inheritance_spec.rb
155
+ - spec/init_spec.rb
156
+ - spec/kind_spec.rb
157
+ - spec/member_init_spec.rb
158
+ - spec/new_doodle_spec.rb
159
+ - spec/readonly_spec.rb
160
+ - spec/required_spec.rb
136
161
  - spec/serialization_spec.rb
137
162
  - spec/singleton_spec.rb
163
+ - spec/specialized_attribute_class_spec.rb
138
164
  - spec/superclass_spec.rb
165
+ - spec/symbolize_keys_spec.rb
166
+ - spec/to_hash_spec.rb
139
167
  - spec/validation2_spec.rb
140
- - spec/init_spec.rb
141
168
  - spec/validation_spec.rb
142
- - spec/class_spec.rb
143
- - spec/extra_args_spec.rb
144
- - spec/collector_spec.rb
145
- - spec/required_spec.rb
146
- - spec/defaults_spec.rb
147
- - spec/conversion_spec.rb
148
- - spec/class_validation_spec.rb
149
- - spec/doodle_spec.rb
150
- - spec/has_spec.rb
151
- - spec/doodle_context_spec.rb