seamusabshere-conversions 1.2.1 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/conversions.gemspec +1 -1
- data/lib/conversions/unit.rb +20 -10
- data/test/unit_test.rb +7 -0
- metadata +1 -1
data/conversions.gemspec
CHANGED
data/lib/conversions/unit.rb
CHANGED
@@ -29,18 +29,28 @@ module Conversions #:nodoc
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def self.conversion #:nodoc:
|
32
|
-
if !defined? @@conversion
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
32
|
+
map_conversion if !defined? @@conversion
|
33
|
+
@@conversion
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.register(from, to, value)
|
37
|
+
CONVERSION.merge!(from.to_sym => { to.to_sym => value.to_f })
|
38
|
+
map_conversion
|
39
|
+
Numeric.send :include, Conversions::Ext
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def self.map_conversion
|
45
|
+
@@conversion = {}
|
46
|
+
CONVERSION.each do |from, conversion|
|
47
|
+
conversion.each do |to, value|
|
48
|
+
@@conversion[from] ||= {}
|
49
|
+
@@conversion[from][to] = value
|
50
|
+
@@conversion[to] ||= {}
|
51
|
+
@@conversion[to][from] = 1.0 / value
|
41
52
|
end
|
42
53
|
end
|
43
|
-
@@conversion
|
44
54
|
end
|
45
55
|
end
|
46
56
|
end
|
data/test/unit_test.rb
CHANGED
@@ -38,4 +38,11 @@ class UnitTest < Test::Unit::TestCase
|
|
38
38
|
assert_equal 1.0, Conversions::Unit.new(1.0, unit).to(unit, 2)
|
39
39
|
end
|
40
40
|
end
|
41
|
+
|
42
|
+
def test_register
|
43
|
+
Conversions::Unit.register(:dollars, :cents, 100.0)
|
44
|
+
assert_in_delta 0.01, Conversions::Unit.exchange_rate(:cents, :dollars), DELTA
|
45
|
+
amount = Conversions::Unit.new(10.0, :dollars)
|
46
|
+
assert_equal 1000.0, amount.to(:cents, 2), DELTA
|
47
|
+
end
|
41
48
|
end
|