setsumei 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,8 +3,10 @@ require 'setsumei/build/key'
3
3
  module Setsumei
4
4
  module Build
5
5
  def Build.a(klass,options = {})
6
- inform_developer "#{klass} should be able to list its attributes" unless klass.respond_to? :defined_attributes
7
6
  inform_developer "wrong number of arguments, options must include { from: data }" unless options.keys.include? :from
7
+ detect_string(klass) and return(options[:from].to_s)
8
+ detect_float(klass) and return(options[:from].to_f)
9
+ inform_developer "#{klass} should be able to list its attributes" unless klass.respond_to? :defined_attributes
8
10
 
9
11
  klass.new.tap do |object|
10
12
  klass.defined_attributes.each do |_,attribute|
@@ -17,5 +19,11 @@ module Setsumei
17
19
  def self.inform_developer(message)
18
20
  raise ArgumentError.new message
19
21
  end
22
+ def self.detect_string(klass)
23
+ klass == String
24
+ end
25
+ def self.detect_float(klass)
26
+ klass == Float
27
+ end
20
28
  end
21
29
  end
@@ -1,3 +1,3 @@
1
1
  module Setsumei
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -28,7 +28,30 @@ module Setsumei
28
28
  end
29
29
  it { should == object }
30
30
  end
31
+ describe ".a(String,from: hash_data)" do
32
+ let(:hash_data) { mock "hash_data", to_s: string }
33
+ let(:string) { mock "string" }
31
34
 
35
+ subject { Build.a String, from: hash_data }
36
+
37
+ it "should call to_s on hash_data" do
38
+ hash_data.should_receive(:to_s).and_return(string)
39
+ subject
40
+ end
41
+ it { should == string }
42
+ end
43
+ describe ".a(Float,from: hash_data)" do
44
+ let(:hash_data) { mock "hash_data", to_f: float }
45
+ let(:float) { mock "float" }
46
+
47
+ subject { Build.a Float, from: hash_data }
48
+
49
+ it "should call to_f on hash_data" do
50
+ hash_data.should_receive(:to_f).and_return(float)
51
+ subject
52
+ end
53
+ it { should == float }
54
+ end
32
55
  describe ".a(klass,from: hash_data) error conditions" do
33
56
  context "klass doesn't have defined attributes" do
34
57
  let(:klass) { mock "class" }
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: setsumei
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.8
5
+ version: 0.0.9
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jon Rowe
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-06-13 00:00:00 +01:00
13
+ date: 2011-06-16 00:00:00 +01:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency