tempura 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in tempura.gemspec
4
+ gemspec
5
+
6
+ gem 'rake', '~> 10.0'
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Ben Cullen-Kerney
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,146 @@
1
+ # Tempura
2
+
3
+ Tempura is a library for temperature math and conversion.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'tempura'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install tempura
18
+
19
+ ## Usage
20
+
21
+ ### Arithmetic
22
+
23
+ it 'subtracts another temperature' do
24
+ fahrenheit = Tempura::Fahrenheit.new(212)
25
+ celsius = Tempura::Celsius.new(0)
26
+ result = fahrenheit - celsius
27
+ expect(result).to eq(180)
28
+ expect(result).to be_a(Tempura::Fahrenheit)
29
+ end
30
+
31
+ it 'subtracts native degrees' do
32
+ fahrenheit = Tempura::Fahrenheit.new(212)
33
+ result = fahrenheit - 32
34
+ expect(result).to eq(180)
35
+ expect(result).to be_a(Tempura::Fahrenheit)
36
+ end
37
+
38
+ it 'adds another temperature' do
39
+ fahrenheit = Tempura::Fahrenheit.new(212)
40
+ celsius = Tempura::Celsius.new(0)
41
+ result = fahrenheit + celsius
42
+ expect(result).to eq(244)
43
+ expect(result).to be_a(Tempura::Fahrenheit)
44
+ end
45
+
46
+ it 'adds native degrees' do
47
+ fahrenheit = Tempura::Fahrenheit.new(212)
48
+ result = fahrenheit + 32
49
+ expect(result).to eq(244)
50
+ expect(result).to be_a(Tempura::Fahrenheit)
51
+ end
52
+
53
+ it 'divides by a Numeric' do
54
+ fahrenheit = Tempura::Fahrenheit.new(212)
55
+ result = fahrenheit / 2
56
+ expect(result).to eq(106)
57
+ expect(result).to be_a(Tempura::Fahrenheit)
58
+ end
59
+
60
+ it 'multiplies by a Numeric' do
61
+ fahrenheit = Tempura::Fahrenheit.new(212)
62
+ result = fahrenheit * 2
63
+ expect(result).to eq(424)
64
+ expect(result).to be_a(Tempura::Fahrenheit)
65
+ end
66
+
67
+ it 'can average an array of temperatures' do
68
+ f = Tempura::Fahrenheit.new(212)
69
+ c = Tempura::Celsius.new(100)
70
+ r = Tempura::Rømer.new(60)
71
+ k = Tempura::Kelvin.new(373.15)
72
+ result = ((f + c + r + k) / 4 ).to_delisle
73
+ expect(result).to eq(0)
74
+ expect(result).to be_a(Tempura::Delisle)
75
+ end
76
+
77
+ ### Comparison
78
+
79
+ it 'has >' do
80
+ fahrenheit = Tempura::Fahrenheit.new(212)
81
+ celsius = Tempura::Celsius.new(99)
82
+ expect(fahrenheit > celsius).to be_true
83
+ end
84
+
85
+ it 'has <' do
86
+ fahrenheit = Tempura::Fahrenheit.new(212)
87
+ celsius = Tempura::Celsius.new(101)
88
+ expect(fahrenheit < celsius).to be_true
89
+ end
90
+
91
+ it 'has <=' do
92
+ fahrenheit = Tempura::Fahrenheit.new(212)
93
+ celsius = Tempura::Celsius.new(101)
94
+ expect(fahrenheit <= celsius).to be_true
95
+ end
96
+
97
+ it 'has >=' do
98
+ fahrenheit = Tempura::Fahrenheit.new(212)
99
+ celsius = Tempura::Celsius.new(99)
100
+ expect(fahrenheit >= celsius).to be_true
101
+ end
102
+
103
+ it 'has ==' do
104
+ c = Tempura::Celsius.new(100)
105
+ d = Tempura::Delisle.new(0)
106
+ f = Tempura::Fahrenheit.new(212)
107
+ n = Tempura::Newton.new(33)
108
+ ra = Tempura::Rankine.new(671.67)
109
+ ré = Tempura::Réaumur.new(80)
110
+ rø = Tempura::Rømer.new(60)
111
+
112
+ scales = [c, d, f, n, ra, ré, rø]
113
+ scales.each { |s1|
114
+ scales.each { |s2|
115
+ expect(s1 == s2).to be_true
116
+ }
117
+ }
118
+ end
119
+
120
+ ### Casting
121
+
122
+ it 'casts to_f' do
123
+ temp = Tempura::Fahrenheit.new(212)
124
+ expect(temp.to_f).to eq(212.0)
125
+ expect(temp.to_f).to be_a(Float)
126
+ end
127
+
128
+ it 'casts to_i' do
129
+ temp = Tempura::Kelvin.new(373.15)
130
+ expect(temp.to_i).to eq(373)
131
+ expect(temp.to_i).to be_a(Integer)
132
+ end
133
+
134
+ it 'casts to_d' do
135
+ temp = Tempura::Celsius.new(100)
136
+ expect(temp.to_d).to eq(100.0)
137
+ expect(temp.to_d).to be_a(BigDecimal)
138
+ end
139
+
140
+ ## Contributing
141
+
142
+ 1. Fork it
143
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
144
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
145
+ 4. Push to the branch (`git push origin my-new-feature`)
146
+ 5. Create new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,16 @@
1
+ # encoding: utf-8
2
+
3
+ require 'bigdecimal'
4
+ require 'tempura/version'
5
+ require 'tempura/temperature'
6
+ require 'tempura/celsius'
7
+ require 'tempura/delisle'
8
+ require 'tempura/fahrenheit'
9
+ require 'tempura/kelvin'
10
+ require 'tempura/newton'
11
+ require 'tempura/rankine'
12
+ require 'tempura/réaumur'
13
+ require 'tempura/rømer'
14
+
15
+ module Tempura
16
+ end
@@ -0,0 +1 @@
1
+ class Tempura::Celsius < Tempura::Temperature; end
@@ -0,0 +1 @@
1
+ class Tempura::Delisle < Tempura::Temperature; end
@@ -0,0 +1 @@
1
+ class Tempura::Fahrenheit < Tempura::Temperature; end
@@ -0,0 +1 @@
1
+ class Tempura::Kelvin < Tempura::Temperature; end
@@ -0,0 +1 @@
1
+ class Tempura::Newton < Tempura::Temperature; end
@@ -0,0 +1 @@
1
+ class Tempura::Rankine < Tempura::Temperature; end
@@ -0,0 +1,2 @@
1
+ # encoding: utf-8
2
+ class Tempura::Réaumur < Tempura::Temperature; end
@@ -0,0 +1,2 @@
1
+ # encoding: utf-8
2
+ class Tempura::Rømer < Tempura::Temperature; end
@@ -0,0 +1,175 @@
1
+ # encoding: utf-8
2
+
3
+ require 'bigdecimal'
4
+
5
+ class Tempura::Temperature
6
+ include Comparable
7
+
8
+ def initialize(value)
9
+ @common = to_common(value)
10
+ end
11
+
12
+ def <=>(temp)
13
+ if temp.is_a?(Tempura::Temperature)
14
+ @common <=> temp.send(:common)
15
+ else
16
+ @common <=> to_common(temp)
17
+ end
18
+ end
19
+
20
+ def -(temp)
21
+ if temp.is_a?(Tempura::Temperature)
22
+ temp = to_native(temp)
23
+ end
24
+ self.class.new(in_native - temp)
25
+ end
26
+
27
+ def +(temp)
28
+ if temp.is_a?(Tempura::Temperature)
29
+ temp = to_native(temp)
30
+ end
31
+ self.class.new(in_native + temp)
32
+ end
33
+
34
+ def /(temp)
35
+ if temp.is_a?(Tempura::Temperature)
36
+ raise ArgumentError, "cannot divide by a Tempura::Temperature, only a Numeric"
37
+ end
38
+ self.class.new(in_native.div(temp))
39
+ end
40
+
41
+ def *(temp)
42
+ if temp.is_a?(Tempura::Temperature)
43
+ raise ArgumentError, "cannot multiply by a Tempura::Temperature, only a Numeric"
44
+ end
45
+ self.class.new(in_native * temp)
46
+ end
47
+
48
+ def to_f
49
+ in_native.to_f
50
+ end
51
+
52
+ def to_i
53
+ in_native.to_i
54
+ end
55
+
56
+ def to_d
57
+ in_native
58
+ end
59
+
60
+ def to_native(temp)
61
+ temp.send("in_#{self.class.name.split('::').last.downcase}")
62
+ end
63
+
64
+ def from_celsius(given)
65
+ given + BigDecimal("273.15")
66
+ end
67
+
68
+ def in_celsius
69
+ common - BigDecimal("273.15")
70
+ end
71
+
72
+ def to_celsius
73
+ Tempura::Celsius.new(in_celsius)
74
+ end
75
+
76
+ def from_delisle(given)
77
+ BigDecimal("373.15") - ((given * 2) / 3)
78
+ end
79
+
80
+ def in_delisle
81
+ ((BigDecimal("373.15") - common) * 3) / 2
82
+ end
83
+
84
+ def to_delisle
85
+ Tempura::Delisle.new(in_delisle)
86
+ end
87
+
88
+ def from_fahrenheit(given)
89
+ ((given + BigDecimal("459.67")) * 5) / 9
90
+ end
91
+
92
+ def in_fahrenheit
93
+ ((common * 9)/5) - BigDecimal("459.67")
94
+ end
95
+
96
+ def to_fahrenheit
97
+ Tempura::Fahrenheit.new(in_fahrenheit)
98
+ end
99
+
100
+ def from_kelvin(given)
101
+ given
102
+ end
103
+
104
+ def in_kelvin
105
+ common
106
+ end
107
+
108
+ def to_kelvin
109
+ Tempura::Kelvin.new(in_kelvin)
110
+ end
111
+
112
+ def from_newton(given)
113
+ ((given * 100) / 33) + BigDecimal("273.15")
114
+ end
115
+
116
+ def in_newton
117
+ ((common - BigDecimal("273.15")) * 33) / 100
118
+ end
119
+
120
+ def to_newton
121
+ Tempura::Newton.new(in_newton)
122
+ end
123
+
124
+ def from_rankine(given)
125
+ (given * 5) / 9
126
+ end
127
+
128
+ def in_rankine
129
+ (common * 9) / 5
130
+ end
131
+
132
+ def to_rankine
133
+ Tempura::Rankine.new(in_rankine)
134
+ end
135
+
136
+ def from_réaumur(given)
137
+ ((given * 5) / 4) + BigDecimal("273.15")
138
+ end
139
+
140
+ def in_réaumur
141
+ ((common - BigDecimal("273.15")) * 4) / 5
142
+ end
143
+ alias :in_reaumur :in_réaumur
144
+
145
+ def to_réaumur
146
+ Tempura::Réaumur.new(in_réaumur)
147
+ end
148
+ alias :to_reaumur :to_réaumur
149
+
150
+ def from_rømer(given)
151
+ (((given - BigDecimal("7.5")) * 40) / 21) + BigDecimal("273.15")
152
+ end
153
+
154
+ def in_rømer
155
+ (((common - BigDecimal("273.15")) * 21) / 40) + BigDecimal("7.5")
156
+ end
157
+ alias :in_romer :in_rømer
158
+
159
+ def to_rømer
160
+ Tempura::Rømer.new(in_rømer)
161
+ end
162
+ alias :to_romer :to_rømer
163
+
164
+ private
165
+
166
+ attr_reader :common
167
+
168
+ def to_common(given)
169
+ self.send("from_#{self.class.name.split('::').last.downcase}", BigDecimal(given.to_s))
170
+ end
171
+
172
+ def in_native
173
+ to_native(self)
174
+ end
175
+ end
@@ -0,0 +1,3 @@
1
+ module Tempura
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,49 @@
1
+ # encoding: utf-8
2
+
3
+ require 'tempura'
4
+
5
+ shared_examples_for '373.15 K' do
6
+ it 'is expressable in Celsius (C)' do
7
+ expect(subject.to_celsius).to eq(100)
8
+ expect(subject.to_celsius).to be_a(Tempura::Celsius)
9
+ end
10
+
11
+ it 'is expressable in Delisle (De)' do
12
+ expect(subject.to_delisle).to eq(0)
13
+ expect(subject.to_delisle).to be_a(Tempura::Delisle)
14
+ end
15
+
16
+ it 'is expressable in Fahrenheit (F)' do
17
+ expect(subject.to_fahrenheit).to eq(212)
18
+ expect(subject.to_fahrenheit).to be_a(Tempura::Fahrenheit)
19
+ end
20
+
21
+ it 'is expressable in Kelvin (K)' do
22
+ expect(subject.to_kelvin).to eq(373.15)
23
+ expect(subject.to_kelvin).to be_a(Tempura::Kelvin)
24
+ end
25
+
26
+ it 'is expressable in Newton (N)' do
27
+ expect(subject.to_newton).to eq(33)
28
+ expect(subject.to_newton).to be_a(Tempura::Newton)
29
+ end
30
+
31
+ it 'is expressable in Rankine (R)' do
32
+ expect(subject.to_rankine).to eq(671.67)
33
+ expect(subject.to_rankine).to be_a(Tempura::Rankine)
34
+ end
35
+
36
+ it 'is expressable in Réaumur (Ré)' do
37
+ expect(subject.to_réaumur).to eq(80)
38
+ expect(subject.to_réaumur).to be_a(Tempura::Réaumur)
39
+ expect(subject.to_reaumur).to eq(80)
40
+ expect(subject.to_reaumur).to be_a(Tempura::Réaumur)
41
+ end
42
+
43
+ it 'is expressable in Rømer (Rø)' do
44
+ expect(subject.to_rømer).to eq(60)
45
+ expect(subject.to_rømer).to be_a(Tempura::Rømer)
46
+ expect(subject.to_romer).to eq(60)
47
+ expect(subject.to_rømer).to be_a(Tempura::Rømer)
48
+ end
49
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tempura::Celsius do
4
+ subject { Tempura::Celsius.new(100) }
5
+
6
+ it 'is natively in Celsius (C)' do
7
+ expect(subject).to eq(100)
8
+ expect(subject).to be_a(Tempura::Celsius)
9
+ end
10
+
11
+ it_behaves_like '373.15 K'
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tempura::Delisle do
4
+ subject { Tempura::Delisle.new(0) }
5
+
6
+ it 'is natively in Delisle (De)' do
7
+ expect(subject).to eq(0)
8
+ expect(subject).to be_a(Tempura::Delisle)
9
+ end
10
+
11
+ it_behaves_like '373.15 K'
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tempura::Fahrenheit do
4
+ subject { Tempura::Fahrenheit.new(212) }
5
+
6
+ it 'is natively in Fahrenheit (F)' do
7
+ expect(subject).to eq(212)
8
+ expect(subject).to be_a(Tempura::Fahrenheit)
9
+ end
10
+
11
+ it_behaves_like '373.15 K'
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tempura::Kelvin do
4
+ subject { Tempura::Kelvin.new(373.15) }
5
+
6
+ it 'is natively in Kelvin (K)' do
7
+ expect(subject).to eq(373.15)
8
+ expect(subject).to be_a(Tempura::Kelvin)
9
+ end
10
+
11
+ it_behaves_like '373.15 K'
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tempura::Newton do
4
+ subject { Tempura::Newton.new(33) }
5
+
6
+ it 'is natively in Newton (N)' do
7
+ expect(subject).to eq(33)
8
+ expect(subject).to be_a(Tempura::Newton)
9
+ end
10
+
11
+ it_behaves_like '373.15 K'
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Tempura::Rankine do
4
+ subject { Tempura::Rankine.new(671.67) }
5
+
6
+ it 'is natively in Rankine (R)' do
7
+ expect(subject).to eq(671.67)
8
+ expect(subject).to be_a(Tempura::Rankine)
9
+ end
10
+
11
+ it_behaves_like '373.15 K'
12
+ end
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Tempura::Réaumur do
6
+ subject { Tempura::Réaumur.new(80) }
7
+
8
+ it 'is natively in Réaumur (Ré)' do
9
+ expect(subject).to eq(80)
10
+ expect(subject).to be_a(Tempura::Réaumur)
11
+ end
12
+
13
+ it_behaves_like '373.15 K'
14
+ end
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Tempura::Rømer do
6
+ subject { Tempura::Rømer.new(60) }
7
+
8
+ it 'is natively in Rømer (Rø)' do
9
+ expect(subject).to eq(60)
10
+ expect(subject).to be_a(Tempura::Rømer)
11
+ end
12
+
13
+ it_behaves_like '373.15 K'
14
+ end
@@ -0,0 +1,137 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Tempura::Temperature do
6
+
7
+ describe 'arithmetic' do
8
+ it 'subtracts another temperature' do
9
+ fahrenheit = Tempura::Fahrenheit.new(212)
10
+ celsius = Tempura::Celsius.new(0)
11
+ result = fahrenheit - celsius
12
+ expect(result).to eq(180)
13
+ expect(result).to be_a(Tempura::Fahrenheit)
14
+ end
15
+
16
+ it 'subtracts native degrees' do
17
+ fahrenheit = Tempura::Fahrenheit.new(212)
18
+ result = fahrenheit - 32
19
+ expect(result).to eq(180)
20
+ expect(result).to be_a(Tempura::Fahrenheit)
21
+ end
22
+
23
+ it 'adds another temperature' do
24
+ fahrenheit = Tempura::Fahrenheit.new(212)
25
+ celsius = Tempura::Celsius.new(0)
26
+ result = fahrenheit + celsius
27
+ expect(result).to eq(244)
28
+ expect(result).to be_a(Tempura::Fahrenheit)
29
+ end
30
+
31
+ it 'adds native degrees' do
32
+ fahrenheit = Tempura::Fahrenheit.new(212)
33
+ result = fahrenheit + 32
34
+ expect(result).to eq(244)
35
+ expect(result).to be_a(Tempura::Fahrenheit)
36
+ end
37
+
38
+ it 'divides by a Numeric' do
39
+ fahrenheit = Tempura::Fahrenheit.new(212)
40
+ result = fahrenheit / 2
41
+ expect(result).to eq(106)
42
+ expect(result).to be_a(Tempura::Fahrenheit)
43
+ end
44
+
45
+ it 'multiplies by a Numeric' do
46
+ fahrenheit = Tempura::Fahrenheit.new(212)
47
+ result = fahrenheit * 2
48
+ expect(result).to eq(424)
49
+ expect(result).to be_a(Tempura::Fahrenheit)
50
+ end
51
+
52
+ it 'can average an array of temperatures' do
53
+ f = Tempura::Fahrenheit.new(212)
54
+ c = Tempura::Celsius.new(100)
55
+ r = Tempura::Rømer.new(60)
56
+ k = Tempura::Kelvin.new(373.15)
57
+ result = ((f + c + r + k) / 4 ).to_delisle
58
+ expect(result).to eq(0)
59
+ expect(result).to be_a(Tempura::Delisle)
60
+ end
61
+ end
62
+
63
+ describe 'comparison' do
64
+ it 'compares internal value' do
65
+ fahrenheit = Tempura::Fahrenheit.new(212)
66
+ celsius = Tempura::Celsius.new(101)
67
+ leg = fahrenheit <=> celsius
68
+ expect(leg).to eq(-1)
69
+ end
70
+
71
+ describe 'comparison operators' do
72
+ it 'has >' do
73
+ fahrenheit = Tempura::Fahrenheit.new(212)
74
+ celsius = Tempura::Celsius.new(99)
75
+ expect(fahrenheit > celsius).to be_true
76
+ end
77
+
78
+ it 'has <' do
79
+ fahrenheit = Tempura::Fahrenheit.new(212)
80
+ celsius = Tempura::Celsius.new(101)
81
+ expect(fahrenheit < celsius).to be_true
82
+ end
83
+
84
+ it 'has <=' do
85
+ fahrenheit = Tempura::Fahrenheit.new(212)
86
+ celsius = Tempura::Celsius.new(101)
87
+ expect(fahrenheit <= celsius).to be_true
88
+ end
89
+
90
+ it 'has >=' do
91
+ fahrenheit = Tempura::Fahrenheit.new(212)
92
+ celsius = Tempura::Celsius.new(99)
93
+ expect(fahrenheit >= celsius).to be_true
94
+ end
95
+
96
+ it 'has ==' do
97
+ c = Tempura::Celsius.new(100)
98
+ d = Tempura::Delisle.new(0)
99
+ f = Tempura::Fahrenheit.new(212)
100
+ n = Tempura::Newton.new(33)
101
+ ra = Tempura::Rankine.new(671.67)
102
+ ré = Tempura::Réaumur.new(80)
103
+ rø = Tempura::Rømer.new(60)
104
+
105
+ scales = [c, d, f, n, ra, ré, rø]
106
+ scales.each { |s1|
107
+ scales.each { |s2|
108
+ expect(s1 == s2).to be_true
109
+ }
110
+ }
111
+ end
112
+ end
113
+ end
114
+
115
+ describe 'casting to Numerics' do
116
+
117
+ it 'casts to_f' do
118
+ temp = Tempura::Fahrenheit.new(212)
119
+ expect(temp.to_f).to eq(212.0)
120
+ expect(temp.to_f).to be_a(Float)
121
+ end
122
+
123
+ it 'casts to_i' do
124
+ temp = Tempura::Kelvin.new(373.15)
125
+ expect(temp.to_i).to eq(373)
126
+ expect(temp.to_i).to be_a(Integer)
127
+ end
128
+
129
+ it 'casts to_d' do
130
+ temp = Tempura::Celsius.new(100)
131
+ expect(temp.to_d).to eq(100.0)
132
+ expect(temp.to_d).to be_a(BigDecimal)
133
+ end
134
+
135
+ end
136
+
137
+ end
@@ -0,0 +1,48 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'tempura/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "tempura"
8
+ gem.version = Tempura::VERSION
9
+ gem.authors = ["Ben Cullen-Kerney"]
10
+ gem.email = ["ben@beancuke.com"]
11
+ gem.description = %q{Tempura is a library for temperature math and conversion. Currently supported scales are Fahrenheit, Celsius, Kelvin, Delisle, Newton, Rankine, Réaumer, and Rømer.}
12
+ gem.summary = %q{Tempura is a library for temperature math and conversion.}
13
+ gem.homepage = "https://github.com/bak/tempura"
14
+ gem.files = %W(
15
+ .gitignore
16
+ Gemfile
17
+ LICENSE.txt
18
+ README.md
19
+ Rakefile
20
+ lib/tempura.rb
21
+ lib/tempura/celsius.rb
22
+ lib/tempura/delisle.rb
23
+ lib/tempura/fahrenheit.rb
24
+ lib/tempura/kelvin.rb
25
+ lib/tempura/newton.rb
26
+ lib/tempura/rankine.rb
27
+ lib/tempura/réaumur.rb
28
+ lib/tempura/rømer.rb
29
+ lib/tempura/temperature.rb
30
+ lib/tempura/version.rb
31
+ spec/spec_helper.rb
32
+ spec/tempura/celsius_spec.rb
33
+ spec/tempura/delisle_spec.rb
34
+ spec/tempura/fahrenheit_spec.rb
35
+ spec/tempura/kelvin_spec.rb
36
+ spec/tempura/newton_spec.rb
37
+ spec/tempura/rankine_spec.rb
38
+ spec/tempura/réaumur_spec.rb
39
+ spec/tempura/rømer_spec.rb
40
+ spec/tempura/temperature_spec.rb
41
+ tempura.gemspec
42
+ )
43
+
44
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
45
+ gem.require_paths = ["lib"]
46
+
47
+ gem.add_development_dependency 'rspec'
48
+ end
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tempura
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Ben Cullen-Kerney
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-02-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: Tempura is a library for temperature math and conversion. Currently supported
31
+ scales are Fahrenheit, Celsius, Kelvin, Delisle, Newton, Rankine, Réaumer, and Rømer.
32
+ email:
33
+ - ben@beancuke.com
34
+ executables: []
35
+ extensions: []
36
+ extra_rdoc_files: []
37
+ files:
38
+ - .gitignore
39
+ - Gemfile
40
+ - LICENSE.txt
41
+ - README.md
42
+ - Rakefile
43
+ - lib/tempura.rb
44
+ - lib/tempura/celsius.rb
45
+ - lib/tempura/delisle.rb
46
+ - lib/tempura/fahrenheit.rb
47
+ - lib/tempura/kelvin.rb
48
+ - lib/tempura/newton.rb
49
+ - lib/tempura/rankine.rb
50
+ - lib/tempura/réaumur.rb
51
+ - lib/tempura/rømer.rb
52
+ - lib/tempura/temperature.rb
53
+ - lib/tempura/version.rb
54
+ - spec/spec_helper.rb
55
+ - spec/tempura/celsius_spec.rb
56
+ - spec/tempura/delisle_spec.rb
57
+ - spec/tempura/fahrenheit_spec.rb
58
+ - spec/tempura/kelvin_spec.rb
59
+ - spec/tempura/newton_spec.rb
60
+ - spec/tempura/rankine_spec.rb
61
+ - spec/tempura/réaumur_spec.rb
62
+ - spec/tempura/rømer_spec.rb
63
+ - spec/tempura/temperature_spec.rb
64
+ - tempura.gemspec
65
+ homepage: https://github.com/bak/tempura
66
+ licenses: []
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ segments:
78
+ - 0
79
+ hash: -301657800019721027
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ segments:
87
+ - 0
88
+ hash: -301657800019721027
89
+ requirements: []
90
+ rubyforge_project:
91
+ rubygems_version: 1.8.23
92
+ signing_key:
93
+ specification_version: 3
94
+ summary: Tempura is a library for temperature math and conversion.
95
+ test_files:
96
+ - spec/spec_helper.rb
97
+ - spec/tempura/celsius_spec.rb
98
+ - spec/tempura/delisle_spec.rb
99
+ - spec/tempura/fahrenheit_spec.rb
100
+ - spec/tempura/kelvin_spec.rb
101
+ - spec/tempura/newton_spec.rb
102
+ - spec/tempura/rankine_spec.rb
103
+ - spec/tempura/réaumur_spec.rb
104
+ - spec/tempura/rømer_spec.rb
105
+ - spec/tempura/temperature_spec.rb