m9t 0.3.2 → 1.0.0

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.
@@ -0,0 +1,124 @@
1
+ require "m9t/temperature"
2
+
3
+ describe M9t::Temperature do
4
+ CONVERSIONS = [
5
+ [:kelvin, 100, 373.15],
6
+ [:fahrenheit, 100, 212.0],
7
+ ]
8
+
9
+ context "constants" do
10
+ specify "absolute zero" do
11
+ expect(M9t::Temperature::ABSOLUTE_ZERO).to be_within(0.0001).of(-273.15)
12
+ end
13
+ end
14
+
15
+ context "default options" do
16
+ specify "units: meters" do
17
+ expect(M9t::Temperature.options[:units]).to eq(:degrees)
18
+ end
19
+
20
+ specify "precision: 5" do
21
+ expect(M9t::Temperature.options[:precision]).to eq(5)
22
+ end
23
+ end
24
+
25
+ context "class methods" do
26
+ context ".new" do
27
+ it "handles identity" do
28
+ expect(M9t::Temperature.new(45.0).value).to eq(45.0)
29
+ end
30
+ end
31
+
32
+ context ".measurement_name" do
33
+ it "is 'temperature'" do
34
+ expect(M9t::Temperature.measurement_name).to eq("temperature")
35
+ end
36
+ end
37
+
38
+ context "conversion factories" do
39
+ CONVERSIONS.each do |unit, degrees, other|
40
+ specify ".#{unit}" do
41
+ expect(M9t::Temperature.send(unit, other).value).
42
+ to be_within(degrees.abs / 1000.0).of(degrees)
43
+ end
44
+ end
45
+ end
46
+
47
+ context "conversions" do
48
+ context "from degrees" do
49
+ CONVERSIONS.each do |unit, degrees, other|
50
+ method = :"to_#{unit}"
51
+ specify method do
52
+ expect(M9t::Temperature.send(method, degrees)).to eq(other)
53
+ end
54
+ end
55
+ end
56
+
57
+ context "to degrees" do
58
+ CONVERSIONS.each do |unit, degrees, other|
59
+ method = :"#{unit}_to_degrees"
60
+ specify method do
61
+ expect(M9t::Temperature.send(method, other)).to eq(degrees)
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+
68
+ context "conversions" do
69
+ context "from degrees" do
70
+ CONVERSIONS.each do |unit, degrees, other|
71
+ subject { M9t::Temperature.new(degrees) }
72
+
73
+ method = :"to_#{unit}"
74
+ specify method do
75
+ expect(subject.send(method)).to be_within(other.abs / 1000.0).of(other)
76
+ end
77
+ end
78
+ end
79
+ end
80
+
81
+ context "#to_s" do
82
+ subject { M9t::Temperature.new(135) }
83
+
84
+ specify "en" do
85
+ I18n.locale = :en
86
+ expect(subject.to_s).to eq("135.00000 degrees")
87
+ end
88
+
89
+ specify "it" do
90
+ I18n.locale = :it
91
+ expect(subject.to_s).to eq("135,00000 gradi")
92
+ end
93
+
94
+ specify "precision" do
95
+ I18n.locale = :en
96
+ expect(subject.to_s(precision: 0)).to eq("135 degrees")
97
+ end
98
+
99
+ specify "abbreviated, en" do
100
+ I18n.locale = :en
101
+ expect(subject.to_s(abbreviated: true, precision: 0)).
102
+ to eq("135°C")
103
+ end
104
+
105
+ specify "kelvin, en" do
106
+ I18n.locale = :en
107
+ expect(subject.to_s(units: :kelvin, precision: 2)).
108
+ to eq("408.15 kelvin")
109
+ end
110
+
111
+ specify "kelvin, it" do
112
+ I18n.locale = :it
113
+ expect(subject.to_s(units: :kelvin, precision: 2)).
114
+ to eq("408,15 kelvin")
115
+ end
116
+
117
+ specify "abbreviated, kelvin, it" do
118
+ I18n.locale = :it
119
+ expect(
120
+ subject.to_s(units: :kelvin, abbreviated: true, precision: 2)
121
+ ).to eq("408,15K")
122
+ end
123
+ end
124
+ end
metadata CHANGED
@@ -1,71 +1,95 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: m9t
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
5
- prerelease:
4
+ version: 1.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Joe Yates
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-06-05 00:00:00.000000000 Z
11
+ date: 2021-05-30 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: i18n
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: 0.3.5
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: 0.3.5
41
+ - !ruby/object:Gem::Dependency
42
+ name: codeclimate-test-reporter
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.4.8
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.4.8
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 3.0.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 3.0.0
46
69
  - !ruby/object:Gem::Dependency
47
70
  name: simplecov
48
71
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
72
  requirements:
51
- - - ! '>='
73
+ - - ">="
52
74
  - !ruby/object:Gem::Version
53
75
  version: '0'
54
76
  type: :development
55
77
  prerelease: false
56
78
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
79
  requirements:
59
- - - ! '>='
80
+ - - ">="
60
81
  - !ruby/object:Gem::Version
61
82
  version: '0'
62
- description: ! 'Classes for handling basic measurement units: distance, direction,
63
- speed, temperature and pressure'
83
+ description: 'Classes for handling basic measurement units: distance, direction, speed,
84
+ temperature and pressure'
64
85
  email: joe.g.yates@gmail.com
65
86
  executables: []
66
87
  extensions: []
67
88
  extra_rdoc_files: []
68
89
  files:
90
+ - ".gitignore"
91
+ - ".rspec"
92
+ - ".travis.yml"
69
93
  - GPL-LICENSE.txt
70
94
  - Gemfile
71
95
  - MIT-LICENSE.txt
@@ -75,57 +99,53 @@ files:
75
99
  - lib/m9t/base.rb
76
100
  - lib/m9t/direction.rb
77
101
  - lib/m9t/distance.rb
102
+ - lib/m9t/errors.rb
78
103
  - lib/m9t/i18n.rb
79
104
  - lib/m9t/pressure.rb
80
105
  - lib/m9t/speed.rb
81
106
  - lib/m9t/temperature.rb
82
107
  - lib/m9t/version.rb
108
+ - locales/de.yml
83
109
  - locales/en.yml
84
110
  - locales/it.yml
85
111
  - m9t.gemspec
86
- - test/base_test.rb
87
- - test/direction_test.rb
88
- - test/distance_test.rb
89
- - test/i18n_test.rb
90
- - test/pressure_test.rb
91
- - test/speed_test.rb
92
- - test/temperature_test.rb
93
- - test/test_helper.rb
112
+ - spec/base_spec.rb
113
+ - spec/direction_spec.rb
114
+ - spec/distance_spec.rb
115
+ - spec/i18n_spec.rb
116
+ - spec/pressure_spec.rb
117
+ - spec/spec_helper.rb
118
+ - spec/speed_spec.rb
119
+ - spec/temperature_spec.rb
94
120
  homepage: https://github.com/joeyates/m9t
95
- licenses: []
121
+ licenses:
122
+ - MIT
123
+ metadata: {}
96
124
  post_install_message:
97
125
  rdoc_options: []
98
126
  require_paths:
99
127
  - lib
100
128
  required_ruby_version: !ruby/object:Gem::Requirement
101
- none: false
102
129
  requirements:
103
- - - ! '>='
130
+ - - ">="
104
131
  - !ruby/object:Gem::Version
105
- version: '0'
106
- segments:
107
- - 0
108
- hash: 2996522648784473659
132
+ version: 2.4.0
109
133
  required_rubygems_version: !ruby/object:Gem::Requirement
110
- none: false
111
134
  requirements:
112
- - - ! '>='
135
+ - - ">="
113
136
  - !ruby/object:Gem::Version
114
137
  version: '0'
115
- segments:
116
- - 0
117
- hash: 2996522648784473659
118
138
  requirements: []
119
- rubyforge_project: nowarning
120
- rubygems_version: 1.8.24
139
+ rubygems_version: 3.1.4
121
140
  signing_key:
122
- specification_version: 3
141
+ specification_version: 4
123
142
  summary: Measurements and conversions library for Ruby
124
143
  test_files:
125
- - test/base_test.rb
126
- - test/direction_test.rb
127
- - test/distance_test.rb
128
- - test/i18n_test.rb
129
- - test/pressure_test.rb
130
- - test/speed_test.rb
131
- - test/temperature_test.rb
144
+ - spec/base_spec.rb
145
+ - spec/direction_spec.rb
146
+ - spec/distance_spec.rb
147
+ - spec/i18n_spec.rb
148
+ - spec/pressure_spec.rb
149
+ - spec/spec_helper.rb
150
+ - spec/speed_spec.rb
151
+ - spec/temperature_spec.rb
data/test/base_test.rb DELETED
@@ -1,55 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require File.expand_path( 'test_helper', File.dirname( __FILE__ ) )
4
-
5
- class SomeMeasurement
6
- DEFAULT_OPTIONS = {:units => :foos, :abbreviated => false, :decimals => 1}
7
- CONVERSIONS = {:foos => 1.0,
8
- :bars => 1 / 42.0}
9
-
10
- include M9t::Base
11
- end
12
-
13
- class SomeDerivedMeasurement < SomeMeasurement
14
- end
15
-
16
- class TestM9tBase < Test::Unit::TestCase
17
-
18
- def setup
19
- I18n.locale = :en
20
- SomeMeasurement.reset_options!
21
- end
22
-
23
- # class methods
24
-
25
- def test_class_method_missing_for_known_units
26
- assert_in_delta(0.0714, SomeMeasurement.foos_to_bars(3.0), 0.001)
27
- end
28
-
29
- def test_class_method_missing_fails_on_unknown_units
30
- assert_raise(RuntimeError) do
31
- SomeMeasurement.bazs_to_bars(3.0)
32
- end
33
- end
34
-
35
- # instance methods
36
-
37
- def test_instance_method_missing_for_known_units
38
- some = SomeMeasurement.new(3.0)
39
- assert_in_delta(0.0714, some.to_bars(3.0), 0.001)
40
- end
41
-
42
- def test_instance_method_missing_fails_on_unknown_units
43
- some = SomeMeasurement.new(3.0)
44
- assert_raise(RuntimeError) do
45
- some.to_bazs(3.0)
46
- end
47
- end
48
-
49
- # derived classes
50
-
51
- def test_derived_class_gets_options
52
- assert_equal(SomeMeasurement.options, SomeDerivedMeasurement.options)
53
- end
54
-
55
- end
@@ -1,106 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require File.expand_path( 'test_helper', File.dirname( __FILE__ ) )
4
-
5
- class TestM9tDirection < Test::Unit::TestCase
6
-
7
- def setup
8
- I18n.locale = :en
9
- M9t::Direction.reset_options!
10
- end
11
-
12
- # Basic use
13
- def test_degrees
14
- assert_equal(45, M9t::Direction.new(45).value)
15
- end
16
-
17
- # Class methods
18
-
19
- # Base class
20
-
21
- def test_measurement_name
22
- assert_equal('direction', M9t::Direction.measurement_name)
23
- end
24
-
25
- def test_normalize
26
- assert_equal(5, M9t::Direction.normalize(725))
27
- assert_equal(5, M9t::Direction.normalize(-355))
28
- end
29
-
30
- def test_default_options_set
31
- assert_not_nil(M9t::Direction.options)
32
- end
33
-
34
- def test_default_option_abbreviated
35
- assert(! M9t::Direction.options[:abbreviated])
36
- end
37
-
38
- def test_default_option_units
39
- assert_equal(:degrees, M9t::Direction.options[:units])
40
- end
41
-
42
- def test_to_degrees_identity
43
- assert_equal(45, M9t::Direction.degrees_to_degrees(45))
44
- end
45
-
46
- def test_degrees_to_compass
47
- assert_equal('N', M9t::Direction.degrees_to_compass(0))
48
- assert_equal('NE', M9t::Direction.degrees_to_compass(42)) # Rounding up
49
- assert_equal('E', M9t::Direction.degrees_to_compass(93)) # Rounding down
50
- assert_equal('ESE', M9t::Direction.degrees_to_compass(113)) # 16ths
51
- I18n.locale = :it
52
- assert_equal('O', M9t::Direction.degrees_to_compass(270))
53
- end
54
-
55
- def test_compass
56
- assert_equal(0, M9t::Direction.compass('N').value)
57
- assert_equal(247.5, M9t::Direction.compass('WSW').value)
58
- end
59
-
60
- def test_compass_to_degrees
61
- assert_equal(247.5, M9t::Direction.compass_to_degrees('WSW'))
62
- end
63
-
64
- # Instance methods
65
-
66
- def test_to_s_not_abbreviated_singular
67
- direction = M9t::Direction.new( 1 )
68
-
69
- assert_equal '1 degree', direction.to_s
70
- I18n.locale = :it
71
- assert_equal '1 grado', direction.to_s
72
- end
73
-
74
- def test_to_s_not_abbreviated_plural
75
- direction = M9t::Direction.new( 135 )
76
-
77
- assert_equal '135 degrees', direction.to_s
78
- I18n.locale = :it
79
- assert_equal '135 gradi', direction.to_s
80
- end
81
-
82
- def test_to_s_abbreviated
83
- direction = M9t::Direction.new( 135 )
84
-
85
- assert_equal '135°', direction.to_s( :abbreviated => true )
86
- end
87
-
88
- def test_compass_units
89
- direction = M9t::Direction.new( 225 )
90
-
91
- assert_equal 'SW', direction.to_s( :units => :compass )
92
- I18n.locale = :it
93
- assert_equal 'SO', direction.to_s( :units => :compass )
94
- end
95
-
96
- def test_handles_string_leading_zero
97
- assert_equal(10, M9t::Direction.new('010').value)
98
- end
99
-
100
- def test_to_compass
101
- direction = M9t::Direction.new(0)
102
-
103
- assert_equal('N', direction.to_compass)
104
- end
105
-
106
- end