ruby-measurement 1.2.1 → 1.2.2
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 +7 -0
- data/CHANGELOG.md +8 -0
- data/lib/ruby-measurement/unit.rb +3 -1
- data/lib/ruby-measurement/version.rb +1 -1
- data/ruby-measurement.gemspec +2 -1
- data/spec/ruby-measurement/core_ext/numeric_spec.rb +2 -2
- data/spec/ruby-measurement/core_ext/string_spec.rb +4 -4
- data/spec/ruby-measurement/core_ext/symbol_spec.rb +2 -2
- data/spec/ruby-measurement/definitions/metric/area_spec.rb +17 -17
- data/spec/ruby-measurement/definitions/metric/capacity_spec.rb +10 -10
- data/spec/ruby-measurement/definitions/metric/length_spec.rb +65 -65
- data/spec/ruby-measurement/definitions/metric/volume_spec.rb +65 -65
- data/spec/ruby-measurement/definitions/metric/weight_spec.rb +81 -81
- data/spec/ruby-measurement/definitions/us_customary/area_spec.rb +37 -37
- data/spec/ruby-measurement/definitions/us_customary/capacity_spec.rb +17 -17
- data/spec/ruby-measurement/definitions/us_customary/length_spec.rb +65 -65
- data/spec/ruby-measurement/definitions/us_customary/volume_spec.rb +50 -50
- data/spec/ruby-measurement/definitions/us_customary/weight_spec.rb +37 -37
- data/spec/ruby-measurement/measurement_spec.rb +85 -85
- data/spec/ruby-measurement/unit_builder_spec.rb +20 -20
- data/spec/ruby-measurement/unit_spec.rb +33 -33
- metadata +17 -28
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Measurement::Unit::Builder do
|
4
|
-
subject {
|
3
|
+
RSpec.describe Measurement::Unit::Builder do
|
4
|
+
subject { described_class.new(name, &block) }
|
5
5
|
|
6
6
|
let(:name) { :hour }
|
7
7
|
let(:block) { proc {} }
|
@@ -14,8 +14,8 @@ describe Measurement::Unit::Builder do
|
|
14
14
|
|
15
15
|
it 'should evaluate the block' do
|
16
16
|
unit = subject.to_unit
|
17
|
-
unit.aliases.
|
18
|
-
unit.aliases.
|
17
|
+
expect(unit.aliases).to include 'hr'
|
18
|
+
expect(unit.aliases).to include 'hrs'
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
@@ -24,37 +24,37 @@ describe Measurement::Unit::Builder do
|
|
24
24
|
|
25
25
|
it 'should not evaluate the block' do
|
26
26
|
unit = subject.to_unit
|
27
|
-
unit.aliases.
|
27
|
+
expect(unit.aliases).to_not include 'hr'
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
32
|
describe '#to_unit' do
|
33
33
|
it 'should return a matching unit' do
|
34
|
-
subject.to_unit.
|
35
|
-
subject.to_unit.name.
|
36
|
-
subject.to_unit.aliases.
|
34
|
+
expect(subject.to_unit).to be_a Measurement::Unit
|
35
|
+
expect(subject.to_unit.name).to eq 'hour'
|
36
|
+
expect(subject.to_unit.aliases).to eq %w(hour).to_set
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
40
|
describe '#alias' do
|
41
41
|
describe 'with a new alias' do
|
42
42
|
before do
|
43
|
-
subject.to_unit.aliases.
|
43
|
+
expect(subject.to_unit.aliases).to_not include 'hr'
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'should append the new alias' do
|
47
47
|
aliases = subject.to_unit.aliases.dup
|
48
48
|
subject.alias :hr
|
49
|
-
subject.to_unit.aliases.size.
|
50
|
-
subject.to_unit.aliases.
|
49
|
+
expect(subject.to_unit.aliases.size).to eq aliases.size + 1
|
50
|
+
expect(subject.to_unit.aliases).to include 'hr'
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
54
|
describe 'with multiple new aliases' do
|
55
55
|
before do
|
56
|
-
subject.to_unit.aliases.
|
57
|
-
subject.to_unit.aliases.
|
56
|
+
expect(subject.to_unit.aliases).to_not include 'hr'
|
57
|
+
expect(subject.to_unit.aliases).to_not include 'hrs'
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
@@ -66,7 +66,7 @@ describe Measurement::Unit::Builder do
|
|
66
66
|
it 'should not affect the list of aliases' do
|
67
67
|
aliases = subject.to_unit.aliases.dup
|
68
68
|
subject.alias :hour
|
69
|
-
subject.to_unit.aliases.
|
69
|
+
expect(subject.to_unit.aliases).to eq aliases
|
70
70
|
end
|
71
71
|
end
|
72
72
|
end
|
@@ -74,28 +74,28 @@ describe Measurement::Unit::Builder do
|
|
74
74
|
describe '#convert_to' do
|
75
75
|
describe 'with a new target alias' do
|
76
76
|
before do
|
77
|
-
subject.to_unit.conversions['min'].
|
77
|
+
expect(subject.to_unit.conversions['min']).to be_nil
|
78
78
|
end
|
79
79
|
|
80
80
|
it 'should add the conversion' do
|
81
81
|
conversion = proc { |value| value * 60.0 }
|
82
|
-
subject.to_unit.aliases.
|
82
|
+
expect(subject.to_unit.aliases).to_not include 'hr'
|
83
83
|
subject.convert_to(:min, &conversion)
|
84
|
-
subject.to_unit.conversions['min'].
|
84
|
+
expect(subject.to_unit.conversions['min']).to eq conversion
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
88
88
|
describe 'with an existing target alias' do
|
89
89
|
before do
|
90
90
|
subject.convert_to(:min) { |value| value + 3 }
|
91
|
-
subject.to_unit.conversions['min'].
|
91
|
+
expect(subject.to_unit.conversions['min']).to_not be_nil
|
92
92
|
end
|
93
93
|
|
94
94
|
it 'should replace the conversion' do
|
95
95
|
conversion = proc { |value| value * 60.0 }
|
96
|
-
subject.to_unit.aliases.
|
96
|
+
expect(subject.to_unit.aliases).to_not include 'hr'
|
97
97
|
subject.convert_to(:min, &conversion)
|
98
|
-
subject.to_unit.conversions['min'].
|
98
|
+
expect(subject.to_unit.conversions['min']).to eq conversion
|
99
99
|
end
|
100
100
|
end
|
101
101
|
end
|
@@ -1,26 +1,26 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Measurement::Unit do
|
4
|
-
subject {
|
3
|
+
RSpec.describe Measurement::Unit do
|
4
|
+
subject { described_class.new(name) }
|
5
5
|
|
6
6
|
let(:name) { :hour }
|
7
7
|
|
8
8
|
describe '#name' do
|
9
9
|
it 'returns the name' do
|
10
|
-
subject.name.
|
10
|
+
expect(subject.name).to eq 'hour'
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
describe '#add_alias' do
|
15
15
|
it 'adds new aliases' do
|
16
16
|
subject.add_alias :hr, :hrs
|
17
|
-
subject.aliases.
|
17
|
+
expect(subject.aliases).to eq %w(hour hr hrs).to_set
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'does not add aliases that already exist' do
|
21
21
|
subject.add_alias :hr, :hrs
|
22
22
|
expect { subject.add_alias :hr, :hrs }.to_not raise_error
|
23
|
-
subject.aliases.
|
23
|
+
expect(subject.aliases).to eq %w(hour hr hrs).to_set
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -32,46 +32,46 @@ describe Measurement::Unit do
|
|
32
32
|
it 'adds new conversions' do
|
33
33
|
conversion = proc { |value| value * 60.0 }
|
34
34
|
subject.add_conversion(:min, &conversion)
|
35
|
-
subject.conversions['min'].
|
35
|
+
expect(subject.conversions['min']).to be conversion
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'replaces existing conversions' do
|
39
39
|
conversion = proc { |value| value * 60.0 }
|
40
40
|
subject.add_conversion(:sec, &conversion)
|
41
|
-
subject.conversions['sec'].
|
41
|
+
expect(subject.conversions['sec']).to be conversion
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
45
|
describe '#aliases' do
|
46
46
|
it 'returns the set of aliases' do
|
47
|
-
subject.aliases.
|
47
|
+
expect(subject.aliases).to eq %w(hour).to_set
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
51
|
describe '#conversion' do
|
52
52
|
before do
|
53
|
-
|
53
|
+
described_class.define(:min)
|
54
54
|
subject.add_conversion(:min) { |value| value * 60.0 }
|
55
55
|
end
|
56
56
|
|
57
57
|
it 'returns conversion if it exists' do
|
58
|
-
subject.conversion(:min).
|
58
|
+
expect(subject.conversion(:min)).to_not be_nil
|
59
59
|
end
|
60
60
|
|
61
61
|
it 'returns nil if it does not exist' do
|
62
|
-
subject.conversion(:sec).
|
62
|
+
expect(subject.conversion(:sec)).to be_nil
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
66
|
describe '#inspect' do
|
67
67
|
it 'returns name' do
|
68
|
-
subject.inspect.
|
68
|
+
expect(subject.inspect).to eq subject.name
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
72
|
describe '#to_s' do
|
73
73
|
it 'returns name' do
|
74
|
-
subject.inspect.
|
74
|
+
expect(subject.inspect).to eq subject.name
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
@@ -83,80 +83,80 @@ describe Measurement::Unit do
|
|
83
83
|
|
84
84
|
describe 'other object is a Unit' do
|
85
85
|
it 'returns true when name, aliases, and conversions match' do
|
86
|
-
other =
|
86
|
+
other = described_class.new(:hour)
|
87
87
|
other.add_alias(:hours, :hr, :hrs)
|
88
88
|
other.add_conversion(:min) { |value| value * 60.0 }
|
89
|
-
|
89
|
+
expect(subject == other).to be true
|
90
90
|
end
|
91
91
|
|
92
92
|
it "returns false when the name doesn't match" do
|
93
|
-
other =
|
93
|
+
other = described_class.new(:hoooour)
|
94
94
|
other.add_alias(:hours, :hr, :hrs)
|
95
95
|
other.add_conversion(:min) { |value| value * 60.0 }
|
96
|
-
(subject == other).
|
96
|
+
expect(subject == other).to be false
|
97
97
|
end
|
98
98
|
|
99
99
|
it "returns false when the aliases don't match" do
|
100
|
-
other =
|
100
|
+
other = described_class.new(:hour)
|
101
101
|
other.add_alias(:hoooours, :hr, :hrs)
|
102
102
|
other.add_conversion(:min) { |value| value * 60.0 }
|
103
|
-
(subject == other).
|
103
|
+
expect(subject == other).to be false
|
104
104
|
end
|
105
105
|
|
106
106
|
it "returns false when the conversions don't match" do
|
107
|
-
other =
|
107
|
+
other = described_class.new(:hour)
|
108
108
|
other.add_alias(:hours, :hr, :hrs)
|
109
109
|
other.add_conversion(:min) { |value| value * 60000.0 }
|
110
|
-
(subject == other).
|
110
|
+
expect(subject == other).to be false
|
111
111
|
end
|
112
112
|
end
|
113
113
|
|
114
114
|
describe 'other object is not a Unit' do
|
115
115
|
it 'returns false' do
|
116
|
-
(subject == :hour).
|
116
|
+
expect(subject == :hour).to be false
|
117
117
|
end
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
121
121
|
describe '.names' do
|
122
|
-
subject {
|
122
|
+
subject { described_class }
|
123
123
|
|
124
124
|
it 'returns all defined unit names' do
|
125
125
|
unit_names = subject.names
|
126
|
-
unit_names.
|
127
|
-
unit_names.
|
126
|
+
expect(unit_names).to be_an Array
|
127
|
+
expect(unit_names).to include 'count'
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
131
131
|
describe '.define' do
|
132
|
-
subject {
|
132
|
+
subject { described_class }
|
133
133
|
|
134
134
|
it 'returns a unit builder' do
|
135
135
|
builder = subject.define(:count)
|
136
|
-
builder.
|
136
|
+
expect(builder).to be_a Measurement::Unit::Builder
|
137
137
|
end
|
138
138
|
|
139
139
|
it 'accepts a block' do
|
140
140
|
builder = subject.define(:count) { |b| b.alias :ct }
|
141
|
-
builder.
|
141
|
+
expect(builder).to be_a Measurement::Unit::Builder
|
142
142
|
end
|
143
143
|
end
|
144
144
|
|
145
145
|
describe '.[]' do
|
146
|
-
subject {
|
146
|
+
subject { described_class }
|
147
147
|
|
148
148
|
describe 'for a unit name that is defined' do
|
149
149
|
it 'returns the unit' do
|
150
150
|
unit = subject[:dozen]
|
151
|
-
unit.
|
152
|
-
unit.name.
|
153
|
-
unit.aliases.
|
151
|
+
expect(unit).to be_a described_class
|
152
|
+
expect(unit.name).to eq 'doz'
|
153
|
+
expect(unit.aliases).to eq %w(doz dozen).to_set
|
154
154
|
end
|
155
155
|
end
|
156
156
|
|
157
157
|
describe 'for a unit name that is not defined' do
|
158
158
|
it 'returns nil' do
|
159
|
-
subject[:potato].
|
159
|
+
expect(subject[:potato]).to be nil
|
160
160
|
end
|
161
161
|
end
|
162
162
|
end
|
metadata
CHANGED
@@ -1,56 +1,51 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-measurement
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
5
|
-
prerelease:
|
4
|
+
version: 1.2.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Matt Huggins
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-07-14 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: :development
|
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: rspec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
33
|
+
version: '3.0'
|
38
34
|
type: :development
|
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
|
-
version: '0'
|
40
|
+
version: '3.0'
|
46
41
|
description: Simple gem for calculating and converting measurements
|
47
42
|
email: matt.huggins@gmail.com
|
48
43
|
executables: []
|
49
44
|
extensions: []
|
50
45
|
extra_rdoc_files: []
|
51
46
|
files:
|
52
|
-
- .gitignore
|
53
|
-
- .travis.yml
|
47
|
+
- ".gitignore"
|
48
|
+
- ".travis.yml"
|
54
49
|
- CHANGELOG.md
|
55
50
|
- Gemfile
|
56
51
|
- LICENSE.txt
|
@@ -98,34 +93,28 @@ files:
|
|
98
93
|
- tasks/debug.rake
|
99
94
|
- tasks/rspec.rake
|
100
95
|
homepage: https://github.com/mhuggins/ruby-measurement
|
101
|
-
licenses:
|
96
|
+
licenses:
|
97
|
+
- MIT
|
98
|
+
metadata: {}
|
102
99
|
post_install_message:
|
103
100
|
rdoc_options: []
|
104
101
|
require_paths:
|
105
102
|
- lib
|
106
103
|
required_ruby_version: !ruby/object:Gem::Requirement
|
107
|
-
none: false
|
108
104
|
requirements:
|
109
|
-
- -
|
105
|
+
- - ">="
|
110
106
|
- !ruby/object:Gem::Version
|
111
107
|
version: '0'
|
112
|
-
segments:
|
113
|
-
- 0
|
114
|
-
hash: -4225981439654296545
|
115
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
-
none: false
|
117
109
|
requirements:
|
118
|
-
- -
|
110
|
+
- - ">="
|
119
111
|
- !ruby/object:Gem::Version
|
120
112
|
version: '0'
|
121
|
-
segments:
|
122
|
-
- 0
|
123
|
-
hash: -4225981439654296545
|
124
113
|
requirements: []
|
125
114
|
rubyforge_project:
|
126
|
-
rubygems_version:
|
115
|
+
rubygems_version: 2.2.2
|
127
116
|
signing_key:
|
128
|
-
specification_version:
|
117
|
+
specification_version: 4
|
129
118
|
summary: Simple gem for calculating and converting measurements
|
130
119
|
test_files:
|
131
120
|
- spec/ruby-measurement/core_ext/numeric_spec.rb
|