m9t 0.3.6 → 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.
- checksums.yaml +5 -5
- data/.rspec +1 -2
- data/.travis.yml +1 -0
- data/Gemfile +2 -3
- data/Rakefile +5 -4
- data/lib/m9t.rb +1 -1
- data/lib/m9t/base.rb +10 -11
- data/lib/m9t/direction.rb +11 -14
- data/lib/m9t/distance.rb +1 -2
- data/lib/m9t/errors.rb +7 -5
- data/lib/m9t/i18n.rb +9 -10
- data/lib/m9t/pressure.rb +1 -2
- data/lib/m9t/speed.rb +2 -3
- data/lib/m9t/temperature.rb +1 -2
- data/lib/m9t/version.rb +4 -4
- data/m9t.gemspec +16 -17
- data/spec/base_spec.rb +17 -19
- data/spec/direction_spec.rb +80 -71
- data/spec/distance_spec.rb +38 -41
- data/spec/i18n_spec.rb +15 -18
- data/spec/pressure_spec.rb +5 -8
- data/spec/spec_helper.rb +6 -6
- data/spec/speed_spec.rb +26 -29
- data/spec/temperature_spec.rb +32 -35
- metadata +4 -5
data/spec/distance_spec.rb
CHANGED
@@ -1,36 +1,34 @@
|
|
1
|
-
|
2
|
-
require 'spec_helper'
|
3
|
-
require 'm9t/distance'
|
1
|
+
require "m9t/distance"
|
4
2
|
|
5
3
|
describe M9t::Distance do
|
6
|
-
context
|
7
|
-
it
|
8
|
-
expect(M9t::Distance.measurement_name).to eq(
|
4
|
+
context "class methods" do
|
5
|
+
it "has a measurement name" do
|
6
|
+
expect(M9t::Distance.measurement_name).to eq("distance")
|
9
7
|
end
|
10
8
|
|
11
|
-
context
|
12
|
-
it
|
9
|
+
context "default options" do
|
10
|
+
it "has options" do
|
13
11
|
expect(M9t::Distance.options).not_to be_nil
|
14
12
|
end
|
15
13
|
|
16
|
-
it
|
14
|
+
it "not abbreviated" do
|
17
15
|
expect(M9t::Distance.options[:abbreviated]).to be_falsey
|
18
16
|
end
|
19
17
|
|
20
|
-
it
|
18
|
+
it "units: meters" do
|
21
19
|
expect(M9t::Distance.options[:units]).to be(:meters)
|
22
20
|
end
|
23
21
|
|
24
|
-
it
|
22
|
+
it "precision: 5" do
|
25
23
|
expect(M9t::Distance.options[:precision]).to eq(5)
|
26
24
|
end
|
27
25
|
end
|
28
26
|
|
29
|
-
it
|
27
|
+
it "constructs from meters" do
|
30
28
|
expect(M9t::Distance.new(0.3).to_f).to eq(0.3)
|
31
29
|
end
|
32
30
|
|
33
|
-
context
|
31
|
+
context "units factories" do
|
34
32
|
[
|
35
33
|
[:meters, 0.3, 0.3],
|
36
34
|
[:kilometers, 0.3, 300.0],
|
@@ -43,10 +41,10 @@ describe M9t::Distance do
|
|
43
41
|
end
|
44
42
|
end
|
45
43
|
|
46
|
-
context
|
44
|
+
context "conversions" do
|
47
45
|
[
|
48
|
-
[
|
49
|
-
[
|
46
|
+
["meters", "kilometers", 0.3, 0.0003],
|
47
|
+
["miles", "kilometers", 26.21875, 42.194988]
|
50
48
|
].each do |from, to, input, expected|
|
51
49
|
method = :"#{from}_to_#{to}"
|
52
50
|
specify method do
|
@@ -56,75 +54,74 @@ describe M9t::Distance do
|
|
56
54
|
end
|
57
55
|
end
|
58
56
|
|
59
|
-
context
|
60
|
-
specify
|
57
|
+
context ".conversions" do
|
58
|
+
specify "#to_meters" do
|
61
59
|
expect(M9t::Distance.new(0.3).to_meters).to eq(0.3)
|
62
60
|
end
|
63
61
|
|
64
|
-
specify
|
62
|
+
specify "#to_kilometers" do
|
65
63
|
expect(M9t::Distance.new(0.3).to_kilometers).to eq(0.0003)
|
66
64
|
end
|
67
65
|
|
68
|
-
specify
|
66
|
+
specify "#to_feet" do
|
69
67
|
expect(M9t::Distance.new(0.3).to_feet).to be_within(0.00001).of(0.98425)
|
70
68
|
end
|
71
69
|
end
|
72
70
|
|
73
|
-
context
|
71
|
+
context "#to_s" do
|
74
72
|
before do
|
75
73
|
I18n.locale = :en
|
76
74
|
end
|
77
75
|
|
78
|
-
it
|
76
|
+
it "handles singluar" do
|
79
77
|
distance = M9t::Distance.new(1)
|
80
|
-
expect(distance.to_s(precision: 0)).to eq(
|
78
|
+
expect(distance.to_s(precision: 0)).to eq("1 meter")
|
81
79
|
end
|
82
80
|
|
83
|
-
it
|
81
|
+
it "handles plural" do
|
84
82
|
distance = M9t::Distance.new(10)
|
85
|
-
expect(distance.to_s(precision: 0)).to eq(
|
83
|
+
expect(distance.to_s(precision: 0)).to eq("10 meters")
|
86
84
|
end
|
87
85
|
|
88
|
-
it
|
86
|
+
it "handles abbreviation" do
|
89
87
|
distance = M9t::Distance.new(0.3)
|
90
|
-
expect(distance.to_s(abbreviated: true)).to eq(
|
88
|
+
expect(distance.to_s(abbreviated: true)).to eq("0.30000m")
|
91
89
|
end
|
92
90
|
|
93
|
-
specify
|
91
|
+
specify "units: kilometers" do
|
94
92
|
distance = M9t::Distance.new( 156003 )
|
95
|
-
expect(distance.to_s(precision: 1, units: :kilometers)).to eq(
|
93
|
+
expect(distance.to_s(precision: 1, units: :kilometers)).to eq("156.0 kilometers")
|
96
94
|
end
|
97
95
|
|
98
|
-
specify
|
96
|
+
specify "units: miles, singular" do
|
99
97
|
marathon = M9t::Distance.miles(26.21875)
|
100
|
-
expect(marathon.to_s(units: :miles, precision: 0)).to eq(
|
98
|
+
expect(marathon.to_s(units: :miles, precision: 0)).to eq("26 miles")
|
101
99
|
end
|
102
100
|
|
103
|
-
specify
|
101
|
+
specify "units: miles, plural" do
|
104
102
|
ten_km = M9t::Distance.new(10000)
|
105
|
-
expect(ten_km.to_s(units: :miles, precision: 1)).to eq(
|
103
|
+
expect(ten_km.to_s(units: :miles, precision: 1)).to eq("6.2 miles")
|
106
104
|
end
|
107
105
|
|
108
|
-
context
|
106
|
+
context "i18n" do
|
109
107
|
before do
|
110
108
|
I18n.locale = :it
|
111
109
|
end
|
112
110
|
|
113
|
-
specify
|
111
|
+
specify "precision: 0" do
|
114
112
|
distance = M9t::Distance.new(10)
|
115
|
-
expect(distance.to_s(precision: 0)).to eq(
|
113
|
+
expect(distance.to_s(precision: 0)).to eq("10 metri")
|
116
114
|
end
|
117
115
|
|
118
|
-
specify
|
116
|
+
specify "units: miles" do
|
119
117
|
marathon = M9t::Distance.miles(26.21875)
|
120
|
-
expect(marathon.to_s(units: :miles, precision: 0)).to eq(
|
118
|
+
expect(marathon.to_s(units: :miles, precision: 0)).to eq("26 miglia")
|
121
119
|
end
|
122
120
|
|
123
|
-
specify
|
121
|
+
specify "units: miles, precision: 1" do
|
124
122
|
ten_km = M9t::Distance.new(10000)
|
125
|
-
expect(ten_km.to_s(units: :miles, precision: 1)).to eq(
|
123
|
+
expect(ten_km.to_s(units: :miles, precision: 1)).to eq("6,2 miglia")
|
126
124
|
end
|
127
125
|
end
|
128
126
|
end
|
129
127
|
end
|
130
|
-
|
data/spec/i18n_spec.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
require 'spec_helper'
|
3
|
-
require 'm9t/i18n'
|
1
|
+
require "m9t/i18n"
|
4
2
|
|
5
3
|
describe I18n do
|
6
4
|
before do
|
@@ -11,35 +9,35 @@ describe I18n do
|
|
11
9
|
I18n.locale = @old_locale
|
12
10
|
end
|
13
11
|
|
14
|
-
context
|
12
|
+
context "languages" do
|
15
13
|
[
|
16
|
-
[:en,
|
17
|
-
[:it,
|
18
|
-
[:de,
|
14
|
+
[:en, "mile"],
|
15
|
+
[:it, "miglio"],
|
16
|
+
[:de, "Meile"],
|
19
17
|
].each do |locale, expected|
|
20
18
|
it "has #{locale}" do
|
21
19
|
I18n.locale = locale
|
22
|
-
expect(I18n.t(
|
20
|
+
expect(I18n.t("units.distance.miles.full.one")).to eq(expected)
|
23
21
|
end
|
24
22
|
end
|
25
23
|
end
|
26
24
|
|
27
|
-
context
|
25
|
+
context "decimal separator" do
|
28
26
|
[
|
29
|
-
[:en,
|
30
|
-
[:it,
|
27
|
+
[:en, "."],
|
28
|
+
[:it, ","],
|
31
29
|
].each do |locale, separator|
|
32
30
|
it "has #{separator} for #{locale}" do
|
33
31
|
I18n.locale = locale
|
34
|
-
expect(I18n.t(
|
32
|
+
expect(I18n.t("numbers.decimal_separator")).to eq(separator)
|
35
33
|
end
|
36
34
|
end
|
37
35
|
end
|
38
36
|
|
39
|
-
context
|
37
|
+
context ".localize_float" do
|
40
38
|
[
|
41
|
-
[:en,
|
42
|
-
[:it,
|
39
|
+
[:en, "."],
|
40
|
+
[:it, ","],
|
43
41
|
].each do |locale, separator|
|
44
42
|
it "uses the #{separator} separator in #{locale}" do
|
45
43
|
I18n.locale = locale
|
@@ -48,10 +46,9 @@ describe I18n do
|
|
48
46
|
end
|
49
47
|
end
|
50
48
|
|
51
|
-
it
|
49
|
+
it "accepts a format indicator" do
|
52
50
|
I18n.locale = :en
|
53
|
-
expect(I18n.localize_float(1.5, {format:
|
51
|
+
expect(I18n.localize_float(1.5, {format: "%0.1f"})).to eq("1.5")
|
54
52
|
end
|
55
53
|
end
|
56
54
|
end
|
57
|
-
|
data/spec/pressure_spec.rb
CHANGED
@@ -1,16 +1,14 @@
|
|
1
|
-
|
2
|
-
require 'spec_helper'
|
3
|
-
require 'm9t/pressure'
|
1
|
+
require "m9t/pressure"
|
4
2
|
|
5
3
|
describe M9t::Pressure do
|
6
|
-
context
|
7
|
-
context
|
8
|
-
it
|
4
|
+
context "class methods" do
|
5
|
+
context ".new" do
|
6
|
+
it "returns the identity" do
|
9
7
|
expect(M9t::Pressure.new(1.0).value).to eq(1.0)
|
10
8
|
end
|
11
9
|
end
|
12
10
|
|
13
|
-
context
|
11
|
+
context "other units" do
|
14
12
|
[
|
15
13
|
[:hectopascals, 0.001],
|
16
14
|
[:inches_of_mercury, 0.03386],
|
@@ -22,4 +20,3 @@ describe M9t::Pressure do
|
|
22
20
|
end
|
23
21
|
end
|
24
22
|
end
|
25
|
-
|
data/spec/spec_helper.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
require "codeclimate-test-reporter"
|
2
|
-
require
|
2
|
+
require "rspec"
|
3
3
|
|
4
4
|
CodeClimate::TestReporter.start
|
5
5
|
|
6
|
-
if RUBY_PLATFORM !=
|
7
|
-
require
|
6
|
+
if RUBY_PLATFORM != "java"
|
7
|
+
require "simplecov"
|
8
8
|
SimpleCov.start do
|
9
|
-
add_filter
|
9
|
+
add_filter "/spec/"
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
require
|
13
|
+
require "m9t"
|
14
14
|
|
15
15
|
RSpec.configure do |config|
|
16
16
|
config.run_all_when_everything_filtered = true
|
17
17
|
config.filter_run :focus
|
18
18
|
|
19
|
-
config.order =
|
19
|
+
config.order = "random"
|
20
20
|
end
|
data/spec/speed_spec.rb
CHANGED
@@ -1,16 +1,14 @@
|
|
1
|
-
|
2
|
-
require 'spec_helper'
|
3
|
-
require 'm9t/speed'
|
1
|
+
require "m9t/speed"
|
4
2
|
|
5
3
|
describe M9t::Speed do
|
6
|
-
context
|
7
|
-
it
|
4
|
+
context "conversion constants" do
|
5
|
+
it "has knots" do
|
8
6
|
expect(M9t::Speed::KNOTS).to be_within(0.0001).of(1.9438)
|
9
7
|
end
|
10
8
|
end
|
11
9
|
|
12
|
-
context
|
13
|
-
it
|
10
|
+
context "known units" do
|
11
|
+
it "gives an error for unknown units" do
|
14
12
|
speed = M9t::Speed.new(10)
|
15
13
|
expect {
|
16
14
|
speed.to_s(units: :foos)
|
@@ -18,20 +16,20 @@ describe M9t::Speed do
|
|
18
16
|
end
|
19
17
|
end
|
20
18
|
|
21
|
-
context
|
22
|
-
context
|
23
|
-
it
|
19
|
+
context "class methods" do
|
20
|
+
context ".new" do
|
21
|
+
it "handles identity" do
|
24
22
|
expect(M9t::Speed.new(45).value).to eq(45)
|
25
23
|
end
|
26
24
|
end
|
27
25
|
|
28
|
-
context
|
26
|
+
context ".measurement_name" do
|
29
27
|
it "is 'speed'" do
|
30
|
-
expect(M9t::Speed.measurement_name).to eq(
|
28
|
+
expect(M9t::Speed.measurement_name).to eq("speed")
|
31
29
|
end
|
32
30
|
end
|
33
31
|
|
34
|
-
context
|
32
|
+
context "conversion factories" do
|
35
33
|
[
|
36
34
|
[:kilometers_per_hour, 0.2778],
|
37
35
|
[:miles_per_hour, 0.447],
|
@@ -43,7 +41,7 @@ describe M9t::Speed do
|
|
43
41
|
end
|
44
42
|
end
|
45
43
|
|
46
|
-
context
|
44
|
+
context "conversions" do
|
47
45
|
[
|
48
46
|
[:meters_per_second, :miles_per_hour, 45.0, 100.6621],
|
49
47
|
].each do |from, to, input, expected|
|
@@ -55,7 +53,7 @@ describe M9t::Speed do
|
|
55
53
|
end
|
56
54
|
end
|
57
55
|
|
58
|
-
context
|
56
|
+
context "conversions" do
|
59
57
|
subject { M9t::Speed.new(45) }
|
60
58
|
|
61
59
|
[
|
@@ -69,37 +67,36 @@ describe M9t::Speed do
|
|
69
67
|
end
|
70
68
|
end
|
71
69
|
|
72
|
-
context
|
70
|
+
context "#to_s" do
|
73
71
|
subject { M9t::Speed.new(135.0) }
|
74
72
|
|
75
|
-
specify
|
73
|
+
specify "full en" do
|
76
74
|
I18n.locale = :en
|
77
|
-
expect(subject.to_s).to eq(
|
75
|
+
expect(subject.to_s).to eq("135.00000 meters per second")
|
78
76
|
end
|
79
77
|
|
80
|
-
specify
|
78
|
+
specify "full it" do
|
81
79
|
I18n.locale = :it
|
82
|
-
expect(subject.to_s).to eq(
|
80
|
+
expect(subject.to_s).to eq("135,00000 metri al second")
|
83
81
|
end
|
84
82
|
|
85
|
-
specify
|
83
|
+
specify "precision" do
|
86
84
|
I18n.locale = :en
|
87
|
-
expect(subject.to_s(precision: 0)).to eq(
|
85
|
+
expect(subject.to_s(precision: 0)).to eq("135 meters per second")
|
88
86
|
end
|
89
87
|
|
90
|
-
specify
|
91
|
-
expect(subject.to_s(abbreviated: true, precision: 0)).to eq(
|
88
|
+
specify "abbreviated" do
|
89
|
+
expect(subject.to_s(abbreviated: true, precision: 0)).to eq("135m/s")
|
92
90
|
end
|
93
91
|
|
94
|
-
specify
|
92
|
+
specify "units: knots, en" do
|
95
93
|
I18n.locale = :en
|
96
|
-
expect(subject.to_s(units: :knots, precision: 0)).to eq(
|
94
|
+
expect(subject.to_s(units: :knots, precision: 0)).to eq("262 knots")
|
97
95
|
end
|
98
96
|
|
99
|
-
specify
|
97
|
+
specify "units: knots, it" do
|
100
98
|
I18n.locale = :it
|
101
|
-
expect(subject.to_s(units: :knots, precision: 0)).to eq(
|
99
|
+
expect(subject.to_s(units: :knots, precision: 0)).to eq("262 nodi")
|
102
100
|
end
|
103
101
|
end
|
104
102
|
end
|
105
|
-
|
data/spec/temperature_spec.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
require 'spec_helper'
|
3
|
-
require 'm9t/temperature'
|
1
|
+
require "m9t/temperature"
|
4
2
|
|
5
3
|
describe M9t::Temperature do
|
6
4
|
CONVERSIONS = [
|
@@ -8,36 +6,36 @@ describe M9t::Temperature do
|
|
8
6
|
[:fahrenheit, 100, 212.0],
|
9
7
|
]
|
10
8
|
|
11
|
-
context
|
12
|
-
specify
|
9
|
+
context "constants" do
|
10
|
+
specify "absolute zero" do
|
13
11
|
expect(M9t::Temperature::ABSOLUTE_ZERO).to be_within(0.0001).of(-273.15)
|
14
12
|
end
|
15
13
|
end
|
16
14
|
|
17
|
-
context
|
18
|
-
specify
|
15
|
+
context "default options" do
|
16
|
+
specify "units: meters" do
|
19
17
|
expect(M9t::Temperature.options[:units]).to eq(:degrees)
|
20
18
|
end
|
21
19
|
|
22
|
-
specify
|
20
|
+
specify "precision: 5" do
|
23
21
|
expect(M9t::Temperature.options[:precision]).to eq(5)
|
24
22
|
end
|
25
23
|
end
|
26
24
|
|
27
|
-
context
|
28
|
-
context
|
29
|
-
it
|
25
|
+
context "class methods" do
|
26
|
+
context ".new" do
|
27
|
+
it "handles identity" do
|
30
28
|
expect(M9t::Temperature.new(45.0).value).to eq(45.0)
|
31
29
|
end
|
32
30
|
end
|
33
31
|
|
34
|
-
context
|
32
|
+
context ".measurement_name" do
|
35
33
|
it "is 'temperature'" do
|
36
|
-
expect(M9t::Temperature.measurement_name).to eq(
|
34
|
+
expect(M9t::Temperature.measurement_name).to eq("temperature")
|
37
35
|
end
|
38
36
|
end
|
39
37
|
|
40
|
-
context
|
38
|
+
context "conversion factories" do
|
41
39
|
CONVERSIONS.each do |unit, degrees, other|
|
42
40
|
specify ".#{unit}" do
|
43
41
|
expect(M9t::Temperature.send(unit, other).value).
|
@@ -46,8 +44,8 @@ describe M9t::Temperature do
|
|
46
44
|
end
|
47
45
|
end
|
48
46
|
|
49
|
-
context
|
50
|
-
context
|
47
|
+
context "conversions" do
|
48
|
+
context "from degrees" do
|
51
49
|
CONVERSIONS.each do |unit, degrees, other|
|
52
50
|
method = :"to_#{unit}"
|
53
51
|
specify method do
|
@@ -56,7 +54,7 @@ describe M9t::Temperature do
|
|
56
54
|
end
|
57
55
|
end
|
58
56
|
|
59
|
-
context
|
57
|
+
context "to degrees" do
|
60
58
|
CONVERSIONS.each do |unit, degrees, other|
|
61
59
|
method = :"#{unit}_to_degrees"
|
62
60
|
specify method do
|
@@ -67,8 +65,8 @@ describe M9t::Temperature do
|
|
67
65
|
end
|
68
66
|
end
|
69
67
|
|
70
|
-
context
|
71
|
-
context
|
68
|
+
context "conversions" do
|
69
|
+
context "from degrees" do
|
72
70
|
CONVERSIONS.each do |unit, degrees, other|
|
73
71
|
subject { M9t::Temperature.new(degrees) }
|
74
72
|
|
@@ -80,48 +78,47 @@ describe M9t::Temperature do
|
|
80
78
|
end
|
81
79
|
end
|
82
80
|
|
83
|
-
context
|
81
|
+
context "#to_s" do
|
84
82
|
subject { M9t::Temperature.new(135) }
|
85
83
|
|
86
|
-
specify
|
84
|
+
specify "en" do
|
87
85
|
I18n.locale = :en
|
88
|
-
expect(subject.to_s).to eq(
|
86
|
+
expect(subject.to_s).to eq("135.00000 degrees")
|
89
87
|
end
|
90
88
|
|
91
|
-
specify
|
89
|
+
specify "it" do
|
92
90
|
I18n.locale = :it
|
93
|
-
expect(subject.to_s).to eq(
|
91
|
+
expect(subject.to_s).to eq("135,00000 gradi")
|
94
92
|
end
|
95
93
|
|
96
|
-
specify
|
94
|
+
specify "precision" do
|
97
95
|
I18n.locale = :en
|
98
|
-
expect(subject.to_s(precision: 0)).to eq(
|
96
|
+
expect(subject.to_s(precision: 0)).to eq("135 degrees")
|
99
97
|
end
|
100
98
|
|
101
|
-
specify
|
99
|
+
specify "abbreviated, en" do
|
102
100
|
I18n.locale = :en
|
103
101
|
expect(subject.to_s(abbreviated: true, precision: 0)).
|
104
|
-
to eq(
|
102
|
+
to eq("135°C")
|
105
103
|
end
|
106
104
|
|
107
|
-
specify
|
105
|
+
specify "kelvin, en" do
|
108
106
|
I18n.locale = :en
|
109
107
|
expect(subject.to_s(units: :kelvin, precision: 2)).
|
110
|
-
to eq(
|
108
|
+
to eq("408.15 kelvin")
|
111
109
|
end
|
112
110
|
|
113
|
-
specify
|
111
|
+
specify "kelvin, it" do
|
114
112
|
I18n.locale = :it
|
115
113
|
expect(subject.to_s(units: :kelvin, precision: 2)).
|
116
|
-
to eq(
|
114
|
+
to eq("408,15 kelvin")
|
117
115
|
end
|
118
116
|
|
119
|
-
specify
|
117
|
+
specify "abbreviated, kelvin, it" do
|
120
118
|
I18n.locale = :it
|
121
119
|
expect(
|
122
120
|
subject.to_s(units: :kelvin, abbreviated: true, precision: 2)
|
123
|
-
).to eq(
|
121
|
+
).to eq("408,15K")
|
124
122
|
end
|
125
123
|
end
|
126
124
|
end
|
127
|
-
|