m9t 0.1.7 → 0.1.8

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/lib/m9t.rb CHANGED
@@ -37,7 +37,7 @@ module M9t
37
37
  module VERSION #:nodoc:
38
38
  MAJOR = 0
39
39
  MINOR = 1
40
- TINY = 7
40
+ TINY = 8
41
41
 
42
42
  STRING = [MAJOR, MINOR, TINY].join('.')
43
43
  end
@@ -0,0 +1,47 @@
1
+ # encoding: utf-8
2
+ require 'rubygems' if RUBY_VERSION < '1.9'
3
+ require 'i18n'
4
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'base')
5
+
6
+ module M9t
7
+
8
+ # Represents a temperature
9
+ # Using degrees (celcius), not kelvin, as default unit
10
+ class Temperature
11
+ DEFAULT_OPTIONS = {:units => :degrees, :abbreviated => false, :precision => 5}
12
+ KNOWN_UNITS = [:degrees, :kelvin, :fahrenheit]
13
+
14
+ # Conversions
15
+ ABSOLUTE_ZERO = -273.15
16
+
17
+ include M9t::Base
18
+
19
+ class << self
20
+
21
+ # Accepts a value in kelvin and returns the equivalent M9t::Temperature
22
+ def kelvin(kelvin, options = {})
23
+ new(kelvin.to_f + ABSOLUTE_ZERO, options)
24
+ end
25
+
26
+ # Identity conversion. Simply returns the supplied number
27
+ def to_degrees(degrees)
28
+ degrees.to_f
29
+ end
30
+
31
+ # Converts degrees in kelvin
32
+ def to_kelvin(degrees)
33
+ degrees.to_f - ABSOLUTE_ZERO
34
+ end
35
+
36
+ end
37
+
38
+ alias :to_degrees :value
39
+
40
+ # Returns the value converted to kilometers
41
+ def to_kelvin
42
+ self.class.to_kelvin(@value)
43
+ end
44
+
45
+ end
46
+
47
+ end
data/locales/en.yml CHANGED
@@ -41,5 +41,12 @@ en:
41
41
  zero: knots
42
42
  one: knot
43
43
  other: knots
44
+ temperature:
45
+ degrees:
46
+ full:
47
+ zero: degrees
48
+ one: degree
49
+ other: degrees
50
+ abbreviated: °C
44
51
  direction:
45
52
  sectors: ['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW', 'N']
data/locales/it.yml CHANGED
@@ -41,5 +41,12 @@ it:
41
41
  zero: nodi
42
42
  one: nodo
43
43
  other: nodi
44
+ temperature:
45
+ degrees:
46
+ full:
47
+ zero: gradi
48
+ one: grado
49
+ other: gradi
50
+ abbreviated: °C
44
51
  direction:
45
52
  sectors: ['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSO', 'SO', 'OSO', 'O', 'ONO', 'NO', 'NNO', 'N']
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ require 'rubygems' if RUBY_VERSION < '1.9'
5
+ require 'test/unit'
6
+ require File.join(File.expand_path(File.dirname(__FILE__) + '/../lib'), 'm9t')
7
+
8
+ class TestM9tTemperature < Test::Unit::TestCase
9
+
10
+ def setup
11
+ I18n.locale = :en
12
+ M9t::Temperature.reset_options!
13
+ end
14
+
15
+ # Basic use
16
+ def test_new
17
+ assert_equal(45, M9t::Temperature.new(45).value)
18
+ end
19
+
20
+ # Class methods
21
+
22
+ # Base class
23
+
24
+ def test_measurement_name
25
+ assert_equal('temperature', M9t::Temperature.measurement_name)
26
+ end
27
+
28
+ # conversion constants
29
+
30
+ def test_knot_conversion
31
+ assert_in_delta(1.9438, M9t::Speed::MS_TO_KNOTS, 0.0001)
32
+ end
33
+
34
+ # input conversions
35
+
36
+ def test_class_kelvin
37
+ assert_in_delta(-273.15, M9t::Temperature.kelvin(0).value, 0.0001)
38
+ end
39
+
40
+ # output conversions
41
+
42
+ def test_class_to_kelvin
43
+ assert_in_delta(273.15, M9t::Temperature.to_kelvin(0), 0.0001)
44
+ end
45
+
46
+ # Instance methods
47
+
48
+ # new
49
+
50
+ def test_unknown_units
51
+ assert_raises(M9t::UnitError) { M9t::Temperature.new(1, {:units => :foos}) }
52
+ end
53
+
54
+ # output conversions
55
+
56
+ def test_kmh
57
+ assert_equal(373.15, M9t::Temperature.new(100).to_kelvin)
58
+ end
59
+
60
+ # to_s
61
+
62
+ def test_to_s
63
+ assert_equal '100.00000 degrees', M9t::Temperature.new(100).to_s
64
+ I18n.locale = :it
65
+ assert_equal '100,00000 gradi', M9t::Temperature.new(100).to_s
66
+ end
67
+
68
+ def test_to_s_precision
69
+ assert_equal '135 degrees', M9t::Temperature.new(135, :precision => 0).to_s
70
+ end
71
+
72
+ def test_to_s_abbreviated
73
+ assert_equal '135°C', M9t::Temperature.new(135, :abbreviated => true, :precision => 0).to_s
74
+ end
75
+
76
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 7
9
- version: 0.1.7
8
+ - 8
9
+ version: 0.1.8
10
10
  platform: ruby
11
11
  authors:
12
12
  - Joe Yates
@@ -50,9 +50,11 @@ files:
50
50
  - lib/m9t/direction.rb
51
51
  - lib/m9t/distance.rb
52
52
  - lib/m9t/i18n.rb
53
+ - lib/m9t/temperature.rb
53
54
  - test/direction_test.rb
54
55
  - test/i18n_test.rb
55
56
  - test/distance_test.rb
57
+ - test/temperature_test.rb
56
58
  - test/test_all.rb
57
59
  - test/speed_test.rb
58
60
  - locales/it.yml