m9t 0.1.5 → 0.1.6

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.
Files changed (4) hide show
  1. data/lib/m9t.rb +1 -1
  2. data/lib/m9t/speed.rb +22 -6
  3. data/test/speed_test.rb +18 -4
  4. metadata +2 -2
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 = 5
40
+ TINY = 6
41
41
 
42
42
  STRING = [MAJOR, MINOR, TINY].join('.')
43
43
  end
data/lib/m9t/speed.rb CHANGED
@@ -14,7 +14,8 @@ module M9t
14
14
  SECONDS_PER_HOUR = 60.0 * 60
15
15
  MS_TO_KMH = SECONDS_PER_HOUR / M9t::Distance::METERS_PER_KILOMETER
16
16
  MS_TO_MPH = SECONDS_PER_HOUR / M9t::Distance::METERS_PER_MILE
17
- MS_TO_KNOTS = 1.852 / SECONDS_PER_HOUR * M9t::Distance::METERS_PER_KILOMETER
17
+ KNOTS_TO_KMH = 1.852
18
+ MS_TO_KNOTS = 1.0 / (KNOTS_TO_KMH / SECONDS_PER_HOUR * M9t::Distance::METERS_PER_KILOMETER)
18
19
 
19
20
  include M9t::Base
20
21
 
@@ -22,12 +23,17 @@ module M9t
22
23
 
23
24
  # Accepts kilometers per hour and returns a M9t::Speed instance
24
25
  def kilometers_per_hour(kmh, options = {})
25
- new(kmh.to_f * MS_TO_KMH, options)
26
+ new(kmh.to_f / MS_TO_KMH, options)
26
27
  end
27
28
 
28
29
  # Accepts miles per hour and returns a M9t::Speed instance
29
30
  def miles_per_hour(mph, options = {})
30
- new(mph.to_f * MS_TO_MPH, options)
31
+ new(mph.to_f / MS_TO_MPH, options)
32
+ end
33
+
34
+ # Accepts knots and returns a M9t::Speed instance
35
+ def knots(knots, options = {})
36
+ new(knots.to_f / MS_TO_KNOTS, options)
31
37
  end
32
38
 
33
39
  # Identity conversion. Simply returns the supplied number
@@ -37,17 +43,27 @@ module M9t
37
43
 
38
44
  # Converts meters per second to kilometers per hour
39
45
  def to_kilometers_per_hour(mps)
40
- mps.to_f / MS_TO_KMH
46
+ mps.to_f * MS_TO_KMH
41
47
  end
42
48
 
43
49
  # Converts meters per second to miles per hour
44
50
  def to_miles_per_hour(mps)
45
- mps.to_f / MS_TO_MPH
51
+ mps.to_f * MS_TO_MPH
46
52
  end
47
53
 
48
54
  # Converts meters per second to knots
49
55
  def to_knots(mps)
50
- mps.to_f / MS_TO_KNOTS
56
+ mps.to_f * MS_TO_KNOTS
57
+ end
58
+
59
+ # Converts knots to kilometers hour
60
+ def knots_to_kilometers_per_hour(knots)
61
+ to_kilometers_per_hour(knots.to_f / MS_TO_KNOTS)
62
+ end
63
+
64
+ # Converts knots to kilometers hour
65
+ def kilometers_per_hour_to_knots(knh)
66
+ to_knots(kmh.to_f / MS_TO_KMH)
51
67
  end
52
68
 
53
69
  end
data/test/speed_test.rb CHANGED
@@ -25,16 +25,30 @@ class TestM9tSpeed < Test::Unit::TestCase
25
25
  assert_equal('speed', M9t::Speed.measurement_name)
26
26
  end
27
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
+
28
34
  # input conversions
29
35
 
36
+ def test_class_kilometers_per_hour
37
+ assert_in_delta(0.2778, M9t::Speed.kilometers_per_hour(1).value, 0.0001)
38
+ end
39
+
30
40
  def test_class_miles_per_hour
31
- assert_equal(45, M9t::Speed.miles_per_hour(20.1168).value)
41
+ assert_in_delta(0.447, M9t::Speed.miles_per_hour(1).value, 0.0001)
42
+ end
43
+
44
+ def test_class_knots
45
+ assert_in_delta 0.5144, M9t::Speed.knots(1).value, 0.0001
32
46
  end
33
47
 
34
48
  # output conversions
35
49
 
36
50
  def test_class_to_miles_per_hour
37
- assert_equal(20.1168, M9t::Speed.to_miles_per_hour(45))
51
+ assert_in_delta(100.6621, M9t::Speed.to_miles_per_hour(45), 0.0001)
38
52
  end
39
53
 
40
54
  # Instance methods
@@ -48,11 +62,11 @@ class TestM9tSpeed < Test::Unit::TestCase
48
62
  # output conversions
49
63
 
50
64
  def test_kmh
51
- assert_equal(12.5, M9t::Speed.new(45).to_kilometers_per_hour)
65
+ assert_equal(162, M9t::Speed.new(45).to_kilometers_per_hour)
52
66
  end
53
67
 
54
68
  def test_mph
55
- assert_equal(20.1168, M9t::Speed.new(45).to_miles_per_hour)
69
+ assert_in_delta(100.6621, M9t::Speed.new(45).to_miles_per_hour, 0.0001)
56
70
  end
57
71
 
58
72
  # to_s
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 5
9
- version: 0.1.5
8
+ - 6
9
+ version: 0.1.6
10
10
  platform: ruby
11
11
  authors:
12
12
  - Joe Yates