parameters 0.1.9 → 0.2.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.
- data/.gitignore +9 -0
- data/.specopts +1 -0
- data/.yardopts +1 -0
- data/ChangeLog.md +98 -0
- data/LICENSE.txt +22 -0
- data/README.md +90 -0
- data/Rakefile +34 -16
- data/lib/parameters/class_methods.rb +11 -3
- data/lib/parameters/class_param.rb +21 -3
- data/lib/parameters/instance_param.rb +9 -4
- data/lib/parameters/param.rb +316 -1
- data/lib/parameters/parameters.rb +43 -26
- data/lib/parameters/version.rb +1 -1
- data/parameters.gemspec +84 -0
- data/spec/class_param_spec.rb +171 -0
- data/spec/instance_param_spec.rb +190 -0
- metadata +34 -95
- data.tar.gz.sig +0 -0
- data/History.rdoc +0 -73
- data/Manifest.txt +0 -31
- data/README.rdoc +0 -91
- data/lib/parameters/parser.rb +0 -136
- data/lib/parameters/yard.rb +0 -1
- data/lib/parameters/yard/handlers.rb +0 -1
- data/lib/parameters/yard/handlers/ruby.rb +0 -2
- data/lib/parameters/yard/handlers/ruby/legacy.rb +0 -1
- data/lib/parameters/yard/handlers/ruby/legacy/parameter_handler.rb +0 -34
- data/lib/parameters/yard/handlers/ruby/parameter_handler.rb +0 -38
- data/spec/parser_spec.rb +0 -47
- metadata.gz.sig +0 -1
@@ -19,35 +19,42 @@ module Parameters
|
|
19
19
|
#
|
20
20
|
def initialize_params(values={})
|
21
21
|
self.class.each_param do |param|
|
22
|
+
new_param = InstanceParam.new(
|
23
|
+
self,
|
24
|
+
param.name,
|
25
|
+
param.type,
|
26
|
+
param.description
|
27
|
+
)
|
28
|
+
|
22
29
|
# do not override existing instance value if present
|
23
|
-
if
|
24
|
-
|
25
|
-
if param.value.
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
30
|
+
if new_param.value.nil?
|
31
|
+
if param.value.kind_of?(Proc)
|
32
|
+
value = if param.value.arity > 0
|
33
|
+
param.value.call(self)
|
34
|
+
else
|
35
|
+
param.value.call()
|
36
|
+
end
|
37
|
+
else
|
38
|
+
begin
|
32
39
|
value = param.value.clone
|
40
|
+
rescue TypeError
|
41
|
+
value = param.value
|
33
42
|
end
|
34
|
-
rescue TypeError
|
35
|
-
value = param.value
|
36
43
|
end
|
37
44
|
|
38
|
-
|
45
|
+
new_param.value = value
|
39
46
|
end
|
40
47
|
|
41
|
-
self.params[param.name] =
|
48
|
+
self.params[param.name] = new_param
|
42
49
|
end
|
43
50
|
|
44
51
|
self.params = values if values.kind_of?(Hash)
|
45
52
|
end
|
46
53
|
|
47
54
|
#
|
48
|
-
# Initializes the parameters using initialize_params. If a
|
55
|
+
# Initializes the parameters using initialize_params. If a `Hash`
|
49
56
|
# is passed in as the first argument, it will be used to set the values
|
50
|
-
# of parameters described within the Hash
|
57
|
+
# of parameters described within the `Hash`.
|
51
58
|
#
|
52
59
|
def initialize(*args,&block)
|
53
60
|
initialize_params(args.first)
|
@@ -62,12 +69,15 @@ module Parameters
|
|
62
69
|
# @param [Hash] options
|
63
70
|
# Additional options.
|
64
71
|
#
|
65
|
-
# @option options [
|
66
|
-
# The
|
72
|
+
# @option options [Class, Array[Class]] :type
|
73
|
+
# The type to enforce the new parameter values to.
|
67
74
|
#
|
68
75
|
# @option options [Object, Proc] :default
|
69
76
|
# The default value for the new parameter.
|
70
77
|
#
|
78
|
+
# @option options [String] :description
|
79
|
+
# The description for the new parameter.
|
80
|
+
#
|
71
81
|
# @return [InstanceParam]
|
72
82
|
# The newly created instance parameter.
|
73
83
|
#
|
@@ -80,7 +90,6 @@ module Parameters
|
|
80
90
|
def parameter(name,options={})
|
81
91
|
name = name.to_sym
|
82
92
|
default = options[:default]
|
83
|
-
description = options[:description]
|
84
93
|
|
85
94
|
# resolve the default value
|
86
95
|
if default.kind_of?(Proc)
|
@@ -93,25 +102,33 @@ module Parameters
|
|
93
102
|
value = default
|
94
103
|
end
|
95
104
|
|
105
|
+
# create the new parameter
|
106
|
+
new_param = InstanceParam.new(
|
107
|
+
self,
|
108
|
+
name,
|
109
|
+
options[:type],
|
110
|
+
options[:description]
|
111
|
+
)
|
112
|
+
|
96
113
|
# set the instance variable
|
97
|
-
|
114
|
+
new_param.value = value
|
98
115
|
|
99
116
|
# add the new parameter
|
100
|
-
self.params[name] =
|
117
|
+
self.params[name] = new_param
|
101
118
|
|
102
119
|
instance_eval %{
|
103
120
|
# define the reader method for the parameter
|
104
121
|
def #{name}
|
105
|
-
|
122
|
+
get_param(#{name.inspect}).value
|
106
123
|
end
|
107
124
|
|
108
125
|
# define the writer method for the parameter
|
109
|
-
def #{name}=(
|
110
|
-
|
126
|
+
def #{name}=(new_value)
|
127
|
+
get_param(#{name.inspect}).value = new_value
|
111
128
|
end
|
112
129
|
}
|
113
130
|
|
114
|
-
return
|
131
|
+
return new_param
|
115
132
|
end
|
116
133
|
|
117
134
|
#
|
@@ -243,10 +260,10 @@ module Parameters
|
|
243
260
|
|
244
261
|
#
|
245
262
|
# Requires that the instance parameters with specific names have
|
246
|
-
# non
|
263
|
+
# non `nil` values.
|
247
264
|
#
|
248
265
|
# @return [true]
|
249
|
-
# All the instance parameters have non
|
266
|
+
# All the instance parameters have non `nil` values.
|
250
267
|
#
|
251
268
|
# @raise [MissingParam]
|
252
269
|
# One of the instance parameters was not set.
|
data/lib/parameters/version.rb
CHANGED
data/parameters.gemspec
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{parameters}
|
8
|
+
s.version = "0.2.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Postmodern"]
|
12
|
+
s.date = %q{2010-02-18}
|
13
|
+
s.description = %q{Parameters allows you to add annotated variables to your classes which may have configurable default values.}
|
14
|
+
s.email = %q{postmodern.mod3@gmail.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"ChangeLog.md",
|
17
|
+
"LICENSE.txt",
|
18
|
+
"README.md"
|
19
|
+
]
|
20
|
+
s.files = [
|
21
|
+
".gitignore",
|
22
|
+
".specopts",
|
23
|
+
".yardopts",
|
24
|
+
"ChangeLog.md",
|
25
|
+
"LICENSE.txt",
|
26
|
+
"README.md",
|
27
|
+
"Rakefile",
|
28
|
+
"lib/parameters.rb",
|
29
|
+
"lib/parameters/class_methods.rb",
|
30
|
+
"lib/parameters/class_param.rb",
|
31
|
+
"lib/parameters/exceptions.rb",
|
32
|
+
"lib/parameters/exceptions/missing_param.rb",
|
33
|
+
"lib/parameters/exceptions/param_not_found.rb",
|
34
|
+
"lib/parameters/extensions.rb",
|
35
|
+
"lib/parameters/extensions/meta.rb",
|
36
|
+
"lib/parameters/extensions/meta/object.rb",
|
37
|
+
"lib/parameters/instance_param.rb",
|
38
|
+
"lib/parameters/param.rb",
|
39
|
+
"lib/parameters/parameters.rb",
|
40
|
+
"lib/parameters/version.rb",
|
41
|
+
"parameters.gemspec",
|
42
|
+
"spec/class_param_spec.rb",
|
43
|
+
"spec/classes/custom_parameters.rb",
|
44
|
+
"spec/classes/inherited_parameters.rb",
|
45
|
+
"spec/classes/other_parameters.rb",
|
46
|
+
"spec/classes/test_parameters.rb",
|
47
|
+
"spec/instance_param_spec.rb",
|
48
|
+
"spec/parameters_spec.rb",
|
49
|
+
"spec/spec_helper.rb"
|
50
|
+
]
|
51
|
+
s.has_rdoc = %q{yard}
|
52
|
+
s.homepage = %q{http://github.com/postmodern/parameters}
|
53
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
54
|
+
s.require_paths = ["lib"]
|
55
|
+
s.rubygems_version = %q{1.3.5}
|
56
|
+
s.summary = %q{Allows you to add annotated variables to your classes}
|
57
|
+
s.test_files = [
|
58
|
+
"spec/parameters_spec.rb",
|
59
|
+
"spec/spec_helper.rb",
|
60
|
+
"spec/class_param_spec.rb",
|
61
|
+
"spec/instance_param_spec.rb",
|
62
|
+
"spec/classes/inherited_parameters.rb",
|
63
|
+
"spec/classes/test_parameters.rb",
|
64
|
+
"spec/classes/custom_parameters.rb",
|
65
|
+
"spec/classes/other_parameters.rb"
|
66
|
+
]
|
67
|
+
|
68
|
+
if s.respond_to? :specification_version then
|
69
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
70
|
+
s.specification_version = 3
|
71
|
+
|
72
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
73
|
+
s.add_development_dependency(%q<rspec>, [">= 1.3.0"])
|
74
|
+
s.add_development_dependency(%q<yard>, [">= 0.5.3"])
|
75
|
+
else
|
76
|
+
s.add_dependency(%q<rspec>, [">= 1.3.0"])
|
77
|
+
s.add_dependency(%q<yard>, [">= 0.5.3"])
|
78
|
+
end
|
79
|
+
else
|
80
|
+
s.add_dependency(%q<rspec>, [">= 1.3.0"])
|
81
|
+
s.add_dependency(%q<yard>, [">= 0.5.3"])
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
@@ -0,0 +1,171 @@
|
|
1
|
+
require 'parameters/class_param'
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'set'
|
5
|
+
|
6
|
+
describe Parameters::ClassParam do
|
7
|
+
describe "type coercion" do
|
8
|
+
it "should coerce values into Sets" do
|
9
|
+
param = Parameters::ClassParam.new(:x,Set)
|
10
|
+
|
11
|
+
param.value = [1, 2, 3, 2]
|
12
|
+
param.value.should == Set[1, 2, 3]
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should coerce values into Sets with types" do
|
16
|
+
param = Parameters::ClassParam.new(:x,Set[Integer])
|
17
|
+
|
18
|
+
param.value = ['x', '0', '1', '2', '3']
|
19
|
+
param.value.should == Set[0, 1, 2, 3]
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should coerce values into Arrays" do
|
23
|
+
param = Parameters::ClassParam.new(:x,Array)
|
24
|
+
|
25
|
+
param.value = Set[1, 2, 3]
|
26
|
+
param.value.should == [1, 2, 3]
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should coerce values into Arrays with types" do
|
30
|
+
param = Parameters::ClassParam.new(:x,Array[Integer])
|
31
|
+
|
32
|
+
param.value = Set['1', '2', '3']
|
33
|
+
param.value.should == [1, 2, 3]
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should coerce values into URIs" do
|
37
|
+
param = Parameters::ClassParam.new(:x,URI)
|
38
|
+
|
39
|
+
param.value = 'http://bla.com/'
|
40
|
+
param.value.should == URI::HTTP.build(:host => 'bla.com')
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should coerce values into Regexp" do
|
44
|
+
param = Parameters::ClassParam.new(:x,Regexp)
|
45
|
+
|
46
|
+
param.value = 'x*'
|
47
|
+
param.value.should == /x*/
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should coerce values into Dates" do
|
51
|
+
param = Parameters::ClassParam.new(:x,Date)
|
52
|
+
|
53
|
+
param.value = '2010-02-18'
|
54
|
+
param.value.should == Date.new(2010,2,18)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should coerce values into DateTimes" do
|
58
|
+
param = Parameters::ClassParam.new(:x,DateTime)
|
59
|
+
|
60
|
+
param.value = '2010-02-18T00:36:31-08:00'
|
61
|
+
param.value.should == DateTime.new(2010,2,18,0,36,31,Rational(-1,3),2299161)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should coerce values into Symbols" do
|
65
|
+
param = Parameters::ClassParam.new(:x,Symbol)
|
66
|
+
|
67
|
+
param.value = 'str'
|
68
|
+
param.value.should == :str
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should coerce values into Strings" do
|
72
|
+
param = Parameters::ClassParam.new(:x,String)
|
73
|
+
|
74
|
+
param.value = :str
|
75
|
+
param.value.should == 'str'
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should coerce values into Floats" do
|
79
|
+
param = Parameters::ClassParam.new(:x,Float)
|
80
|
+
|
81
|
+
param.value = '0.5'
|
82
|
+
param.value.should == 0.5
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should coerce values into Integers" do
|
86
|
+
param = Parameters::ClassParam.new(:x,Integer)
|
87
|
+
|
88
|
+
param.value = '5'
|
89
|
+
param.value.should == 5
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should coerce values into hex Integers" do
|
93
|
+
param = Parameters::ClassParam.new(:x,Integer)
|
94
|
+
|
95
|
+
param.value = '0xa'
|
96
|
+
param.value.should == 10
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should coerce values into octal Integers" do
|
100
|
+
param = Parameters::ClassParam.new(:x,Integer)
|
101
|
+
|
102
|
+
param.value = '010'
|
103
|
+
param.value.should == 8
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should coerce values into true boolean values" do
|
107
|
+
param = Parameters::ClassParam.new(:x,true)
|
108
|
+
|
109
|
+
param.value = true
|
110
|
+
param.value.should == true
|
111
|
+
end
|
112
|
+
|
113
|
+
it "should coerce non-false boolean values as true" do
|
114
|
+
param = Parameters::ClassParam.new(:x,true)
|
115
|
+
|
116
|
+
param.value = '1'
|
117
|
+
param.value.should == true
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should coerce 'true' boolean values into true" do
|
121
|
+
param = Parameters::ClassParam.new(:x,true)
|
122
|
+
|
123
|
+
param.value = 'true'
|
124
|
+
param.value.should == true
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should coerce :true boolean values into true" do
|
128
|
+
param = Parameters::ClassParam.new(:x,true)
|
129
|
+
|
130
|
+
param.value = :true
|
131
|
+
param.value.should == true
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should coerce values into false" do
|
135
|
+
param = Parameters::ClassParam.new(:x,true)
|
136
|
+
|
137
|
+
param.value = false
|
138
|
+
param.value.should == false
|
139
|
+
end
|
140
|
+
|
141
|
+
it "should coerce 'false' boolean values into false" do
|
142
|
+
param = Parameters::ClassParam.new(:x,true)
|
143
|
+
|
144
|
+
param.value = 'false'
|
145
|
+
param.value.should == false
|
146
|
+
end
|
147
|
+
|
148
|
+
it "should coerce :false boolean values into false" do
|
149
|
+
param = Parameters::ClassParam.new(:x,true)
|
150
|
+
|
151
|
+
param.value = :false
|
152
|
+
param.value.should == false
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should not coerce nil into a type" do
|
156
|
+
param = Parameters::ClassParam.new(:x,String)
|
157
|
+
obj1 = Object.new
|
158
|
+
|
159
|
+
param.value = nil
|
160
|
+
param.value.should be_nil
|
161
|
+
end
|
162
|
+
|
163
|
+
it "should not coerce unknown types" do
|
164
|
+
param = Parameters::ClassParam.new(:x)
|
165
|
+
obj1 = Object.new
|
166
|
+
|
167
|
+
param.value = obj1
|
168
|
+
param.value.should == obj1
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
@@ -0,0 +1,190 @@
|
|
1
|
+
require 'parameters/instance_param'
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'set'
|
5
|
+
|
6
|
+
describe Parameters::InstanceParam do
|
7
|
+
it "should read values from another object" do
|
8
|
+
obj = Object.new
|
9
|
+
param = Parameters::InstanceParam.new(obj,:x)
|
10
|
+
|
11
|
+
obj.instance_variable_set(:"@x",5)
|
12
|
+
param.value.should == 5
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should write values to another object" do
|
16
|
+
obj = Object.new
|
17
|
+
param = Parameters::InstanceParam.new(obj,:x)
|
18
|
+
|
19
|
+
param.value = 5
|
20
|
+
obj.instance_variable_get(:"@x").should == 5
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "type coercion" do
|
24
|
+
before(:each) do
|
25
|
+
@obj = Object.new
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should coerce values into Sets" do
|
29
|
+
param = Parameters::InstanceParam.new(@obj,:x,Set)
|
30
|
+
|
31
|
+
param.value = [1, 2, 3, 2]
|
32
|
+
param.value.should == Set[1, 2, 3]
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should coerce values into Sets with types" do
|
36
|
+
param = Parameters::InstanceParam.new(@obj,:x,Set[Integer])
|
37
|
+
|
38
|
+
param.value = ['x', '0', '1', '2', '3']
|
39
|
+
param.value.should == Set[0, 1, 2, 3]
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should coerce values into Arrays" do
|
43
|
+
param = Parameters::InstanceParam.new(@obj,:x,Array)
|
44
|
+
|
45
|
+
param.value = Set[1, 2, 3]
|
46
|
+
param.value.should == [1, 2, 3]
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should coerce values into Arrays with types" do
|
50
|
+
param = Parameters::InstanceParam.new(@obj,:x,Array[Integer])
|
51
|
+
|
52
|
+
param.value = Set['1', '2', '3']
|
53
|
+
param.value.should == [1, 2, 3]
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should coerce values into URIs" do
|
57
|
+
param = Parameters::InstanceParam.new(@obj,:x,URI)
|
58
|
+
|
59
|
+
param.value = 'http://bla.com/'
|
60
|
+
param.value.should == URI::HTTP.build(:host => 'bla.com')
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should coerce values into Regexp" do
|
64
|
+
param = Parameters::InstanceParam.new(@obj,:x,Regexp)
|
65
|
+
|
66
|
+
param.value = 'x*'
|
67
|
+
param.value.should == /x*/
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should coerce values into Dates" do
|
71
|
+
param = Parameters::InstanceParam.new(@obj,:x,Date)
|
72
|
+
|
73
|
+
param.value = '2010-02-18'
|
74
|
+
param.value.should == Date.new(2010,2,18)
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should coerce values into DateTimes" do
|
78
|
+
param = Parameters::InstanceParam.new(@obj,:x,DateTime)
|
79
|
+
|
80
|
+
param.value = '2010-02-18T00:36:31-08:00'
|
81
|
+
param.value.should == DateTime.new(2010,2,18,0,36,31,Rational(-1,3),2299161)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should coerce values into Symbols" do
|
85
|
+
param = Parameters::InstanceParam.new(@obj,:x,Symbol)
|
86
|
+
|
87
|
+
param.value = 'str'
|
88
|
+
param.value.should == :str
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should coerce values into Strings" do
|
92
|
+
param = Parameters::InstanceParam.new(@obj,:x,String)
|
93
|
+
|
94
|
+
param.value = :str
|
95
|
+
param.value.should == 'str'
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should coerce values into Floats" do
|
99
|
+
param = Parameters::InstanceParam.new(@obj,:x,Float)
|
100
|
+
|
101
|
+
param.value = '0.5'
|
102
|
+
param.value.should == 0.5
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should coerce values into Integers" do
|
106
|
+
param = Parameters::InstanceParam.new(@obj,:x,Integer)
|
107
|
+
|
108
|
+
param.value = '5'
|
109
|
+
param.value.should == 5
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should coerce values into hex Integers" do
|
113
|
+
param = Parameters::InstanceParam.new(@obj,:x,Integer)
|
114
|
+
|
115
|
+
param.value = '0xa'
|
116
|
+
param.value.should == 10
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should coerce values into octal Integers" do
|
120
|
+
param = Parameters::InstanceParam.new(@obj,:x,Integer)
|
121
|
+
|
122
|
+
param.value = '010'
|
123
|
+
param.value.should == 8
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should coerce true boolean values" do
|
127
|
+
param = Parameters::InstanceParam.new(@obj,:x,true)
|
128
|
+
|
129
|
+
param.value = true
|
130
|
+
param.value.should == true
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should coerce non-false boolean values into true" do
|
134
|
+
param = Parameters::InstanceParam.new(@obj,:x,true)
|
135
|
+
|
136
|
+
param.value = '1'
|
137
|
+
param.value.should == true
|
138
|
+
end
|
139
|
+
|
140
|
+
it "should coerce 'true' boolean values into true" do
|
141
|
+
param = Parameters::InstanceParam.new(@obj,:x,true)
|
142
|
+
|
143
|
+
param.value = 'true'
|
144
|
+
param.value.should == true
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should coerce :true boolean values into true" do
|
148
|
+
param = Parameters::InstanceParam.new(@obj,:x,true)
|
149
|
+
|
150
|
+
param.value = :true
|
151
|
+
param.value.should == true
|
152
|
+
end
|
153
|
+
|
154
|
+
it "should coerce false values" do
|
155
|
+
param = Parameters::InstanceParam.new(@obj,:x,true)
|
156
|
+
|
157
|
+
param.value = false
|
158
|
+
param.value.should == false
|
159
|
+
end
|
160
|
+
|
161
|
+
it "should coerce 'false' boolean values into false" do
|
162
|
+
param = Parameters::InstanceParam.new(@obj,:x,true)
|
163
|
+
|
164
|
+
param.value = 'false'
|
165
|
+
param.value.should == false
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should coerce :false boolean values into false" do
|
169
|
+
param = Parameters::InstanceParam.new(@obj,:x,true)
|
170
|
+
|
171
|
+
param.value = :false
|
172
|
+
param.value.should == false
|
173
|
+
end
|
174
|
+
|
175
|
+
it "should not coerce nil into a type" do
|
176
|
+
param = Parameters::InstanceParam.new(@obj,:x,String)
|
177
|
+
|
178
|
+
param.value = nil
|
179
|
+
param.value.should be_nil
|
180
|
+
end
|
181
|
+
|
182
|
+
it "should not coerce unknown types" do
|
183
|
+
param = Parameters::InstanceParam.new(@obj,:x)
|
184
|
+
obj1 = Object.new
|
185
|
+
|
186
|
+
param.value = obj1
|
187
|
+
param.value.should == obj1
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|