aixm 0.3.1 → 0.3.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 +4 -4
- data/CHANGELOG.md +18 -6
- data/README.md +2 -0
- data/lib/aixm.rb +3 -0
- data/lib/aixm/component/geometry/circle.rb +6 -6
- data/lib/aixm/component/helipad.rb +19 -12
- data/lib/aixm/component/runway.rb +34 -22
- data/lib/aixm/d.rb +66 -0
- data/lib/aixm/document.rb +2 -14
- data/lib/aixm/feature/airport.rb +1 -0
- data/lib/aixm/feature/obstacle.rb +288 -0
- data/lib/aixm/feature/obstacle_group.rb +104 -0
- data/lib/aixm/refinements.rb +105 -102
- data/lib/aixm/shortcuts.rb +3 -0
- data/lib/aixm/version.rb +1 -1
- data/lib/aixm/xy.rb +5 -4
- data/lib/aixm/z.rb +3 -3
- data/spec/factory.rb +108 -5
- data/spec/lib/aixm/component/geometry/circle_spec.rb +4 -8
- data/spec/lib/aixm/component/geometry_spec.rb +2 -2
- data/spec/lib/aixm/component/helipad_spec.rb +2 -10
- data/spec/lib/aixm/component/runway_spec.rb +4 -16
- data/spec/lib/aixm/d_spec.rb +130 -0
- data/spec/lib/aixm/document_spec.rb +215 -2
- data/spec/lib/aixm/feature/obstacle_group_spec.rb +284 -0
- data/spec/lib/aixm/feature/obstacle_spec.rb +285 -0
- data/spec/lib/aixm/refinements_spec.rb +100 -76
- data/spec/lib/aixm/xy_spec.rb +3 -3
- metadata +11 -2
@@ -34,6 +34,96 @@ describe AIXM::Refinements do
|
|
34
34
|
[nil].to_digest.must_equal "cf83e135"
|
35
35
|
end
|
36
36
|
end
|
37
|
+
|
38
|
+
describe :to_uuid do
|
39
|
+
it "must digest single string" do
|
40
|
+
%w(a).to_uuid.must_equal "0cc175b9-c0f1-b6a8-31c3-99e269772661"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "must digest double string" do
|
44
|
+
%w(a b).to_uuid.must_equal "d0726241-0206-76b1-4aa6-298ce6a18b21"
|
45
|
+
end
|
46
|
+
|
47
|
+
it "must digest integer" do
|
48
|
+
[5].to_uuid.must_equal "e4da3b7f-bbce-2345-d777-2b0674a318d5"
|
49
|
+
end
|
50
|
+
|
51
|
+
it "must digest nested array" do
|
52
|
+
[1, [2, 3]].to_uuid.must_equal "02b12e93-0c8b-cc7e-92e7-4ff5d96ce118"
|
53
|
+
end
|
54
|
+
|
55
|
+
it "must digest float" do
|
56
|
+
[5.0].to_uuid.must_equal "336669db-e720-233e-d557-7ddf81b653d3"
|
57
|
+
end
|
58
|
+
|
59
|
+
it "must digest boolean" do
|
60
|
+
[true, false].to_uuid.must_equal "215c2d45-b491-f5c8-15ac-e782ce450fdf"
|
61
|
+
end
|
62
|
+
|
63
|
+
it "must digest nil" do
|
64
|
+
[nil].to_uuid.must_equal "d41d8cd9-8f00-b204-e980-0998ecf8427e"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context Float do
|
70
|
+
describe :to_dms do
|
71
|
+
it "must convert +1. DD to DMS" do
|
72
|
+
1.37595556.to_dms.must_equal %q(001°22'33.44")
|
73
|
+
end
|
74
|
+
|
75
|
+
it "must convert -1. DD to DMS" do
|
76
|
+
-1.37595556.to_dms.must_equal %q(-001°22'33.44")
|
77
|
+
end
|
78
|
+
|
79
|
+
it "must convert +2. DD to DMS" do
|
80
|
+
11.37595556.to_dms.must_equal %q(011°22'33.44")
|
81
|
+
end
|
82
|
+
|
83
|
+
it "must convert -2. DD to DMS" do
|
84
|
+
-11.37595556.to_dms.must_equal %q(-011°22'33.44")
|
85
|
+
end
|
86
|
+
|
87
|
+
it "must convert +3. DD to DMS" do
|
88
|
+
111.37595556.to_dms.must_equal %q(111°22'33.44")
|
89
|
+
end
|
90
|
+
|
91
|
+
it "must convert -3. DD to DMS" do
|
92
|
+
-111.37595556.to_dms.must_equal %q(-111°22'33.44")
|
93
|
+
end
|
94
|
+
|
95
|
+
it "must convert DD to DMS with degrees only" do
|
96
|
+
11.0.to_dms.must_equal %q(011°00'00.00")
|
97
|
+
end
|
98
|
+
|
99
|
+
it "must convert DD to DMS with degrees and minutes only" do
|
100
|
+
11.36666667.to_dms.must_equal %q(011°22'00.00")
|
101
|
+
end
|
102
|
+
|
103
|
+
it "must convert DD to DMS with tenth of seconds only" do
|
104
|
+
1.37594444.to_dms.must_equal %q(001°22'33.40")
|
105
|
+
end
|
106
|
+
|
107
|
+
it "must convert DD to DMS with whole seconds only" do
|
108
|
+
1.37583333.to_dms.must_equal %q(001°22'33.00")
|
109
|
+
end
|
110
|
+
|
111
|
+
it "must convert DD to two zero padded DMS" do
|
112
|
+
1.37595556.to_dms(2).must_equal %q(01°22'33.44")
|
113
|
+
end
|
114
|
+
|
115
|
+
it "must convert DD to no zero padded DMS" do
|
116
|
+
1.37595556.to_dms(0).must_equal %q(1°22'33.44")
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
describe :to_rad do
|
121
|
+
it "must convert correctly" do
|
122
|
+
0.0.to_rad.must_equal 0
|
123
|
+
180.0.to_rad.must_equal Math::PI
|
124
|
+
-123.0.to_rad.must_equal(-2.1467549799530254)
|
125
|
+
end
|
126
|
+
end
|
37
127
|
end
|
38
128
|
|
39
129
|
context Hash do
|
@@ -77,12 +167,6 @@ describe AIXM::Refinements do
|
|
77
167
|
end
|
78
168
|
end
|
79
169
|
|
80
|
-
describe :uptrans do
|
81
|
-
it "must transliterate invalid characters" do
|
82
|
-
'DÉJÀ SCHÖN'.uptrans.must_equal 'DEJA SCHOEN'
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
170
|
describe :to_dd do
|
87
171
|
it "must convert +6.2 DMS to DD" do
|
88
172
|
%q(12°34'56.78").to_dd.must_equal 12.58243888888889
|
@@ -173,82 +257,22 @@ describe AIXM::Refinements do
|
|
173
257
|
end
|
174
258
|
end
|
175
259
|
end
|
176
|
-
end
|
177
|
-
|
178
|
-
context Float do
|
179
|
-
describe :to_rad do
|
180
|
-
it "must convert correctly" do
|
181
|
-
0.0.to_rad.must_equal 0
|
182
|
-
180.0.to_rad.must_equal Math::PI
|
183
|
-
-123.0.to_rad.must_equal(-2.1467549799530254)
|
184
|
-
end
|
185
|
-
end
|
186
|
-
|
187
|
-
describe :to_dms do
|
188
|
-
it "must convert +1. DD to DMS" do
|
189
|
-
1.37595556.to_dms.must_equal %q(001°22'33.44")
|
190
|
-
end
|
191
|
-
|
192
|
-
it "must convert -1. DD to DMS" do
|
193
|
-
-1.37595556.to_dms.must_equal %q(-001°22'33.44")
|
194
|
-
end
|
195
|
-
|
196
|
-
it "must convert +2. DD to DMS" do
|
197
|
-
11.37595556.to_dms.must_equal %q(011°22'33.44")
|
198
|
-
end
|
199
|
-
|
200
|
-
it "must convert -2. DD to DMS" do
|
201
|
-
-11.37595556.to_dms.must_equal %q(-011°22'33.44")
|
202
|
-
end
|
203
|
-
|
204
|
-
it "must convert +3. DD to DMS" do
|
205
|
-
111.37595556.to_dms.must_equal %q(111°22'33.44")
|
206
|
-
end
|
207
|
-
|
208
|
-
it "must convert -3. DD to DMS" do
|
209
|
-
-111.37595556.to_dms.must_equal %q(-111°22'33.44")
|
210
|
-
end
|
211
|
-
|
212
|
-
it "must convert DD to DMS with degrees only" do
|
213
|
-
11.0.to_dms.must_equal %q(011°00'00.00")
|
214
|
-
end
|
215
|
-
|
216
|
-
it "must convert DD to DMS with degrees and minutes only" do
|
217
|
-
11.36666667.to_dms.must_equal %q(011°22'00.00")
|
218
|
-
end
|
219
|
-
|
220
|
-
it "must convert DD to DMS with tenth of seconds only" do
|
221
|
-
1.37594444.to_dms.must_equal %q(001°22'33.40")
|
222
|
-
end
|
223
|
-
|
224
|
-
it "must convert DD to DMS with whole seconds only" do
|
225
|
-
1.37583333.to_dms.must_equal %q(001°22'33.00")
|
226
|
-
end
|
227
260
|
|
228
|
-
|
229
|
-
|
261
|
+
describe :to_time do
|
262
|
+
it "must convert valid dates and times" do
|
263
|
+
subject = '2018-01-01 17:17 +00:00'
|
264
|
+
subject.to_time.must_equal Time.parse(subject)
|
230
265
|
end
|
231
266
|
|
232
|
-
it "
|
233
|
-
|
267
|
+
it "fails on invalid dates and times" do
|
268
|
+
subject = '2018-01-77 17:17 +00:00'
|
269
|
+
-> { subject.to_time }.must_raise ArgumentError
|
234
270
|
end
|
235
271
|
end
|
236
272
|
|
237
|
-
describe :
|
238
|
-
it "must
|
239
|
-
|
240
|
-
end
|
241
|
-
|
242
|
-
it "must convert m to km" do
|
243
|
-
10700.0.to_km(from: :m).must_be_close_to 10.7
|
244
|
-
end
|
245
|
-
|
246
|
-
it "must convert nm to km" do
|
247
|
-
3.7.to_km(from: :nm).must_be_close_to 6.8524
|
248
|
-
end
|
249
|
-
|
250
|
-
it "must convert ft to km" do
|
251
|
-
3200.0.to_km(from: :ft).must_be_close_to 0.97536
|
273
|
+
describe :uptrans do
|
274
|
+
it "must transliterate invalid characters" do
|
275
|
+
'DÉJÀ SCHÖN'.uptrans.must_equal 'DEJA SCHOEN'
|
252
276
|
end
|
253
277
|
end
|
254
278
|
end
|
data/spec/lib/aixm/xy_spec.rb
CHANGED
@@ -137,12 +137,12 @@ describe AIXM::XY do
|
|
137
137
|
end
|
138
138
|
|
139
139
|
it "calculates the distance between the same point as zero" do
|
140
|
-
subject.distance(subject).must_equal 0
|
140
|
+
subject.distance(subject).must_equal AIXM.d(0, :m)
|
141
141
|
end
|
142
142
|
|
143
|
-
it "calculates the distance between two points correctly
|
143
|
+
it "calculates the distance between two points correctly" do
|
144
144
|
other = AIXM.xy(lat: %q(43°59'25.31"N), long: %q(004°45'23.24"E))
|
145
|
-
subject.distance(other).must_equal 1351
|
145
|
+
subject.distance(other).must_equal AIXM.d(1351, :m)
|
146
146
|
end
|
147
147
|
end
|
148
148
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aixm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sven Schwyn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -183,6 +183,7 @@ files:
|
|
183
183
|
- lib/aixm/component/timetable.rb
|
184
184
|
- lib/aixm/component/vertical_limits.rb
|
185
185
|
- lib/aixm/config.rb
|
186
|
+
- lib/aixm/d.rb
|
186
187
|
- lib/aixm/document.rb
|
187
188
|
- lib/aixm/errors.rb
|
188
189
|
- lib/aixm/f.rb
|
@@ -196,6 +197,8 @@ files:
|
|
196
197
|
- lib/aixm/feature/navigational_aid/ndb.rb
|
197
198
|
- lib/aixm/feature/navigational_aid/tacan.rb
|
198
199
|
- lib/aixm/feature/navigational_aid/vor.rb
|
200
|
+
- lib/aixm/feature/obstacle.rb
|
201
|
+
- lib/aixm/feature/obstacle_group.rb
|
199
202
|
- lib/aixm/feature/organisation.rb
|
200
203
|
- lib/aixm/feature/unit.rb
|
201
204
|
- lib/aixm/refinements.rb
|
@@ -225,6 +228,7 @@ files:
|
|
225
228
|
- spec/lib/aixm/component/timetable_spec.rb
|
226
229
|
- spec/lib/aixm/component/vertical_limits_spec.rb
|
227
230
|
- spec/lib/aixm/config_spec.rb
|
231
|
+
- spec/lib/aixm/d_spec.rb
|
228
232
|
- spec/lib/aixm/document_spec.rb
|
229
233
|
- spec/lib/aixm/errors_spec.rb
|
230
234
|
- spec/lib/aixm/f_spec.rb
|
@@ -237,6 +241,8 @@ files:
|
|
237
241
|
- spec/lib/aixm/feature/navigational_aid/tacan_spec.rb
|
238
242
|
- spec/lib/aixm/feature/navigational_aid/vor_spec.rb
|
239
243
|
- spec/lib/aixm/feature/navigational_aid_spec.rb
|
244
|
+
- spec/lib/aixm/feature/obstacle_group_spec.rb
|
245
|
+
- spec/lib/aixm/feature/obstacle_spec.rb
|
240
246
|
- spec/lib/aixm/feature/organisation_spec.rb
|
241
247
|
- spec/lib/aixm/feature/unit_spec.rb
|
242
248
|
- spec/lib/aixm/feature_spec.rb
|
@@ -291,6 +297,7 @@ test_files:
|
|
291
297
|
- spec/lib/aixm/component/timetable_spec.rb
|
292
298
|
- spec/lib/aixm/component/vertical_limits_spec.rb
|
293
299
|
- spec/lib/aixm/config_spec.rb
|
300
|
+
- spec/lib/aixm/d_spec.rb
|
294
301
|
- spec/lib/aixm/document_spec.rb
|
295
302
|
- spec/lib/aixm/errors_spec.rb
|
296
303
|
- spec/lib/aixm/f_spec.rb
|
@@ -303,6 +310,8 @@ test_files:
|
|
303
310
|
- spec/lib/aixm/feature/navigational_aid/tacan_spec.rb
|
304
311
|
- spec/lib/aixm/feature/navigational_aid/vor_spec.rb
|
305
312
|
- spec/lib/aixm/feature/navigational_aid_spec.rb
|
313
|
+
- spec/lib/aixm/feature/obstacle_group_spec.rb
|
314
|
+
- spec/lib/aixm/feature/obstacle_spec.rb
|
306
315
|
- spec/lib/aixm/feature/organisation_spec.rb
|
307
316
|
- spec/lib/aixm/feature/unit_spec.rb
|
308
317
|
- spec/lib/aixm/feature_spec.rb
|