spec/coerce_spec.rb in moosex-0.0.16 vs spec/coerce_spec.rb in moosex-0.0.17
- old
+ new
@@ -43,5 +43,39 @@
it "should coerce from builder" do
ct = CoerceTest.new
ct.attribute_lazy.should == 2048
end
end
+=begin
+require 'moosex/types'
+
+class CoerceTest2
+ include MooseX
+ include MooseX::Types
+
+ has a: { is: :rw, coerce: :to_i } # if respond_to? then coerce
+ has b: { is: :rw, coerce: { to_i: true } } # always coerce
+ has c: { is: :rw, coerce: { to_i: false} } # if respond_to? then coerce
+ has d: { is: :rw, coerce: [ :to_s, :to_string ] } # try to apply one of
+ has e: { is: :rw, coerce: [ # if respond_to? then coerce via method/lambda
+ { to_s: lambda{|x| x.to_s.to_sym } }, # can add more, will be evaluated in order
+ { to_sym: :to_sym },
+ ]
+ }
+ has f: { is: :rw, coerce: [ # should accept one array of
+ { String => lambda{|x| x.to_sym } }, # type => coerce
+ { Object => lambda{|x| x.to_s } },
+ ]
+ }
+ has g: { is: :rw, coerce: { String => :to_sym } } # should accept one pair
+ has h: { is: :rw, coerce: { # should accept one type validator
+ isArray(String) => lambda{|obj| obj.join(",") }
+ }
+ }
+ has i: {is: :rw, isa: isString(format: /\w+:\w+/) } # validator with autocoerce!
+
+end
+
+describe CoerceTest2 do
+
+end
+=end