aixm 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -5
- data/README.md +3 -1
- data/lib/aixm/feature/navigational_aid/designated_point.rb +1 -1
- data/lib/aixm/feature/navigational_aid/dme.rb +1 -1
- data/lib/aixm/feature/navigational_aid/marker.rb +28 -3
- data/lib/aixm/feature/navigational_aid/ndb.rb +24 -4
- data/lib/aixm/feature/navigational_aid/tacan.rb +1 -1
- data/lib/aixm/feature/navigational_aid/vor.rb +4 -4
- data/lib/aixm/version.rb +1 -1
- data/spec/factory.rb +6 -20
- data/spec/lib/aixm/document_spec.rb +32 -70
- data/spec/lib/aixm/feature/navigational_aid/designated_point_spec.rb +6 -2
- data/spec/lib/aixm/feature/navigational_aid/dme_spec.rb +6 -2
- data/spec/lib/aixm/feature/navigational_aid/marker_spec.rb +90 -6
- data/spec/lib/aixm/feature/navigational_aid/ndb_spec.rb +53 -7
- data/spec/lib/aixm/feature/navigational_aid/tacan_spec.rb +6 -2
- data/spec/lib/aixm/feature/navigational_aid/vor_spec.rb +80 -16
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf1e96e454dba0f43522ac3f8253c34a4f5b209498b410449521b2f9f935f624
|
4
|
+
data.tar.gz: ad46225ec28030c43792f854bf1b1bfe4197217c5d45a5400a1e1f74ffa3c2ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 672feb31e6a816e8d9c38a2f491833464d669c58f1ccec81ef776f449a3573eea31a263b822e1a88f70f80ea8864865f3c4127df16433f3d5d66430e6b6df93f
|
7
|
+
data.tar.gz: 81b8b9e9dcd1cf088607380915adaa08cac8a43b4837fe124f47ef81dc4a2de428f5babfb6e64efe6c14961652bbf60c0242c3fd56bcc8c1974aa1bc97b9afb1
|
data/CHANGELOG.md
CHANGED
@@ -1,18 +1,27 @@
|
|
1
|
+
## 0.2.3
|
2
|
+
|
3
|
+
* Breaking minor changes:
|
4
|
+
* VOR types renamed from :vor to :conventional and :doppler_vor to :doppler
|
5
|
+
* NBR types added
|
6
|
+
* Marker types added
|
7
|
+
* Minor changes:
|
8
|
+
* "mid" attributes on all navigational aid features
|
9
|
+
|
1
10
|
## 0.2.2
|
2
11
|
|
3
12
|
* Minor changes:
|
4
|
-
*
|
13
|
+
* Bad error classes fixed
|
5
14
|
* Allow navigational aids without name
|
6
15
|
|
7
16
|
## 0.2.1
|
8
17
|
|
9
18
|
* Major changes:
|
10
|
-
*
|
11
|
-
*
|
19
|
+
* DVOR and VORDME confusion fixed
|
20
|
+
* Schedule added to navigational aids
|
12
21
|
* VOR can be associated with DME (-> VOR/DME) or TACAN (-> VORTAC) now
|
13
|
-
* `to_xml`
|
22
|
+
* `to_xml` renamed to `to_aixm` everywhere
|
14
23
|
* Minor changes:
|
15
|
-
*
|
24
|
+
* Removed :other from all value lists
|
16
25
|
|
17
26
|
## 0.2.0
|
18
27
|
|
data/README.md
CHANGED
@@ -138,6 +138,7 @@ ndb = AIXM.ndb(
|
|
138
138
|
name: String
|
139
139
|
xy: AIXM.xy
|
140
140
|
z: AIXM.z or nil
|
141
|
+
type: :en_route, :locator or :marine
|
141
142
|
f: AIXM.f
|
142
143
|
)
|
143
144
|
ndb.schedule = AIXM.schedule
|
@@ -155,6 +156,7 @@ marker = AIXM.marker(
|
|
155
156
|
name: String
|
156
157
|
xy: AIXM.xy
|
157
158
|
z: AIXM.z or nil
|
159
|
+
type: :outer, :middle, :inner or :backcourse
|
158
160
|
)
|
159
161
|
marker.schedule = AIXM.schedule
|
160
162
|
marker.remarks = String
|
@@ -182,7 +184,7 @@ vor = AIXM.vor(
|
|
182
184
|
name: String
|
183
185
|
xy: AIXM.xy
|
184
186
|
z: AIXM.z or nil
|
185
|
-
type: :
|
187
|
+
type: :conventional or :doppler
|
186
188
|
f: AIXM.f
|
187
189
|
north: :geographic or :grid or :magnetic
|
188
190
|
)
|
@@ -46,7 +46,7 @@ module AIXM
|
|
46
46
|
# Render UID markup
|
47
47
|
def to_uid(*extensions)
|
48
48
|
builder = Builder::XmlMarkup.new(indent: 2)
|
49
|
-
builder.DpnUid({ newEntity: (true if extensions >> :ofm) }.compact) do |dpnuid|
|
49
|
+
builder.DpnUid({ mid: to_digest, newEntity: (true if extensions >> :ofm) }.compact) do |dpnuid|
|
50
50
|
dpnuid.codeId(id)
|
51
51
|
dpnuid.geoLat(xy.lat(format_for(*extensions)))
|
52
52
|
dpnuid.geoLong(xy.long(format_for(*extensions)))
|
@@ -39,7 +39,7 @@ module AIXM
|
|
39
39
|
# Render UID markup
|
40
40
|
def to_uid(*extensions)
|
41
41
|
builder = Builder::XmlMarkup.new(indent: 2)
|
42
|
-
builder.DmeUid({ newEntity: (true if extensions >> :ofm) }.compact) do |dmeuid|
|
42
|
+
builder.DmeUid({ mid: to_digest, newEntity: (true if extensions >> :ofm) }.compact) do |dmeuid|
|
43
43
|
dmeuid.codeId(id)
|
44
44
|
dmeuid.geoLat(xy.lat(format_for(*extensions)))
|
45
45
|
dmeuid.geoLong(xy.long(format_for(*extensions)))
|
@@ -5,23 +5,47 @@ module AIXM
|
|
5
5
|
##
|
6
6
|
# Marker (marker beacons) operate on 75 MHz.
|
7
7
|
#
|
8
|
+
# Types:
|
9
|
+
# * +:outer+ (+:O+) - outer marker
|
10
|
+
# * +:middle+ (+:M+) - middle marker
|
11
|
+
# * +:inner+ (+:I+) - inner marker
|
12
|
+
# * +:backcourse+ (+:C+) - backcourse marker
|
13
|
+
#
|
8
14
|
# https://en.wikipedia.org/wiki/Marker_beacon
|
9
15
|
class Marker < Base
|
10
16
|
using AIXM::Refinements
|
11
17
|
|
18
|
+
TYPES = {
|
19
|
+
O: :outer,
|
20
|
+
M: :middle,
|
21
|
+
I: :inner,
|
22
|
+
C: :backcourse
|
23
|
+
}
|
24
|
+
|
25
|
+
attr_reader :type
|
26
|
+
|
12
27
|
public_class_method :new
|
13
28
|
|
14
29
|
# TODO: Marker require an associated ILS
|
15
|
-
def initialize(
|
30
|
+
def initialize(id:, name:, xy:, z: nil, type:)
|
31
|
+
super(id: id, name: name, xy: xy, z: z)
|
32
|
+
self.type = type
|
16
33
|
warn("WARNING: Maker is not fully implemented yet due to the lack of ILS")
|
17
|
-
|
34
|
+
end
|
35
|
+
|
36
|
+
def type=(value)
|
37
|
+
@type = TYPES.lookup(value&.to_sym, nil) || fail(ArgumentError, "invalid type")
|
38
|
+
end
|
39
|
+
|
40
|
+
def type_key
|
41
|
+
TYPES.key(type)
|
18
42
|
end
|
19
43
|
|
20
44
|
##
|
21
45
|
# Render UID markup
|
22
46
|
def to_uid(*extensions)
|
23
47
|
builder = Builder::XmlMarkup.new(indent: 2)
|
24
|
-
builder.MkrUid({ newEntity: (true if extensions >> :ofm) }.compact) do |mkruid|
|
48
|
+
builder.MkrUid({ mid: to_digest, newEntity: (true if extensions >> :ofm) }.compact) do |mkruid|
|
25
49
|
mkruid.codeId(id)
|
26
50
|
mkruid.geoLat(xy.lat(format_for(*extensions)))
|
27
51
|
mkruid.geoLong(xy.long(format_for(*extensions)))
|
@@ -35,6 +59,7 @@ module AIXM
|
|
35
59
|
builder.Mkr do |mkr|
|
36
60
|
mkr << to_uid(*extensions).indent(2)
|
37
61
|
mkr.OrgUid
|
62
|
+
mkr.codePsnIls(type_key.to_s)
|
38
63
|
mkr.valFreq(75)
|
39
64
|
mkr.uomFreq('MHZ')
|
40
65
|
mkr.txtName(name) if name
|
@@ -6,17 +6,36 @@ module AIXM
|
|
6
6
|
# NDB (non-directional beacon) operate in the frequency band between
|
7
7
|
# 190 kHz and 1750 kHz.
|
8
8
|
#
|
9
|
+
# Types:
|
10
|
+
# * +:en_route+ (+:B+) - high powered NDB
|
11
|
+
# * +:locator+ (+:L+) - locator (low powered NDB)
|
12
|
+
# * +:marine+ (+:M+) - marine beacon
|
13
|
+
#
|
9
14
|
# https://en.wikipedia.org/wiki/Non-directional_beacon
|
10
15
|
class NDB < Base
|
11
16
|
using AIXM::Refinements
|
12
17
|
|
13
|
-
|
18
|
+
TYPES = {
|
19
|
+
B: :en_route,
|
20
|
+
L: :locator,
|
21
|
+
M: :marine
|
22
|
+
}.freeze
|
23
|
+
|
24
|
+
attr_reader :type, :f
|
14
25
|
|
15
26
|
public_class_method :new
|
16
27
|
|
17
|
-
def initialize(id:, name:, xy:, z: nil, f:)
|
28
|
+
def initialize(id:, name:, xy:, z: nil, type:, f:)
|
18
29
|
super(id: id, name: name, xy: xy, z: z)
|
19
|
-
self.f = f
|
30
|
+
self.type, self.f = type, f
|
31
|
+
end
|
32
|
+
|
33
|
+
def type=(value)
|
34
|
+
@type = TYPES.lookup(value&.to_sym, nil) || fail(ArgumentError, "invalid type")
|
35
|
+
end
|
36
|
+
|
37
|
+
def type_key
|
38
|
+
TYPES.key(type)
|
20
39
|
end
|
21
40
|
|
22
41
|
def f=(value)
|
@@ -34,7 +53,7 @@ module AIXM
|
|
34
53
|
# Render UID markup
|
35
54
|
def to_uid(*extensions)
|
36
55
|
builder = Builder::XmlMarkup.new(indent: 2)
|
37
|
-
builder.NdbUid({ newEntity: (true if extensions >> :ofm) }.compact) do |ndbuid|
|
56
|
+
builder.NdbUid({ mid: to_digest, newEntity: (true if extensions >> :ofm) }.compact) do |ndbuid|
|
38
57
|
ndbuid.codeId(id)
|
39
58
|
ndbuid.geoLat(xy.lat(format_for(*extensions)))
|
40
59
|
ndbuid.geoLong(xy.long(format_for(*extensions)))
|
@@ -51,6 +70,7 @@ module AIXM
|
|
51
70
|
ndb.txtName(name) if name
|
52
71
|
ndb.valFreq(f.freq.trim)
|
53
72
|
ndb.uomFreq(f.unit.upcase.to_s)
|
73
|
+
ndb.codeClass(type_key.to_s)
|
54
74
|
ndb.codeDatum('WGE')
|
55
75
|
if z
|
56
76
|
ndb.valElev(z.alt)
|
@@ -17,7 +17,7 @@ module AIXM
|
|
17
17
|
# Render UID markup
|
18
18
|
def to_uid(*extensions)
|
19
19
|
builder = Builder::XmlMarkup.new(indent: 2)
|
20
|
-
builder.TcnUid({ newEntity: (true if extensions >> :ofm) }.compact) do |tcnuid|
|
20
|
+
builder.TcnUid({ mid: to_digest, newEntity: (true if extensions >> :ofm) }.compact) do |tcnuid|
|
21
21
|
tcnuid.codeId(id)
|
22
22
|
tcnuid.geoLat(xy.lat(format_for(*extensions)))
|
23
23
|
tcnuid.geoLong(xy.long(format_for(*extensions)))
|
@@ -7,7 +7,7 @@ module AIXM
|
|
7
7
|
# 108.00 Mhz to 117.95 MHz. Two type of VORs exist:
|
8
8
|
#
|
9
9
|
# Types:
|
10
|
-
# * +:vor+ (+:VOR+) -
|
10
|
+
# * +:vor+ (+:VOR+) - conventional VOR (also known as CVOR)
|
11
11
|
# * +:doppler_vor+ (+:DVOR+) - Doppler VOR
|
12
12
|
#
|
13
13
|
# North types:
|
@@ -22,8 +22,8 @@ module AIXM
|
|
22
22
|
using AIXM::Refinements
|
23
23
|
|
24
24
|
TYPES = {
|
25
|
-
VOR: :
|
26
|
-
DVOR: :
|
25
|
+
VOR: :conventional,
|
26
|
+
DVOR: :doppler
|
27
27
|
}.freeze
|
28
28
|
|
29
29
|
NORTHS = {
|
@@ -90,7 +90,7 @@ module AIXM
|
|
90
90
|
# Render UID markup
|
91
91
|
def to_uid(*extensions)
|
92
92
|
builder = Builder::XmlMarkup.new(indent: 2)
|
93
|
-
builder.VorUid({ newEntity: (true if extensions >> :ofm) }.compact) do |voruid|
|
93
|
+
builder.VorUid({ mid: to_digest, newEntity: (true if extensions >> :ofm) }.compact) do |voruid|
|
94
94
|
voruid.codeId(id)
|
95
95
|
voruid.geoLat(xy.lat(format_for(*extensions)))
|
96
96
|
voruid.geoLong(xy.long(format_for(*extensions)))
|
data/lib/aixm/version.rb
CHANGED
data/spec/factory.rb
CHANGED
@@ -105,7 +105,8 @@ module AIXM
|
|
105
105
|
id: '---',
|
106
106
|
name: 'MARKER NAVAID',
|
107
107
|
xy: AIXM.xy(lat: %q(47°51'33"N), long: %q(007°33'36"E)),
|
108
|
-
z: AIXM.z(500, :qnh)
|
108
|
+
z: AIXM.z(500, :qnh),
|
109
|
+
type: :outer
|
109
110
|
).tap do |marker|
|
110
111
|
marker.schedule = AIXM::H24
|
111
112
|
marker.remarks = 'marker navaid'
|
@@ -118,6 +119,7 @@ module AIXM
|
|
118
119
|
name: 'NDB NAVAID',
|
119
120
|
xy: AIXM.xy(lat: %q(47°51'33"N), long: %q(007°33'36"E)),
|
120
121
|
z: AIXM.z(500, :qnh),
|
122
|
+
type: :en_route,
|
121
123
|
f: AIXM.f(555, :khz)
|
122
124
|
).tap do |ndb|
|
123
125
|
ndb.schedule = AIXM::H24
|
@@ -144,7 +146,7 @@ module AIXM
|
|
144
146
|
name: 'VOR NAVAID',
|
145
147
|
xy: AIXM.xy(lat: %q(47°51'33"N), long: %q(007°33'36"E)),
|
146
148
|
z: AIXM.z(500, :qnh),
|
147
|
-
type: :
|
149
|
+
type: :conventional,
|
148
150
|
f: AIXM.f(111, :mhz),
|
149
151
|
north: :geographic
|
150
152
|
).tap do |vor|
|
@@ -153,28 +155,13 @@ module AIXM
|
|
153
155
|
end
|
154
156
|
end
|
155
157
|
|
156
|
-
def dvor
|
157
|
-
AIXM.vor(
|
158
|
-
id: 'DVV',
|
159
|
-
name: 'DOPPLER-VOR NAVAID',
|
160
|
-
xy: AIXM.xy(lat: %q(47°51'33"N), long: %q(007°33'36"E)),
|
161
|
-
z: AIXM.z(500, :qnh),
|
162
|
-
type: :doppler_vor,
|
163
|
-
f: AIXM.f(111, :mhz),
|
164
|
-
north: :geographic
|
165
|
-
).tap do |doppler_vor|
|
166
|
-
doppler_vor.schedule = AIXM::H24
|
167
|
-
doppler_vor.remarks = 'doppler-vor navaid'
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
158
|
def vordme
|
172
159
|
AIXM.vor(
|
173
160
|
id: 'VDD',
|
174
161
|
name: 'VOR/DME NAVAID',
|
175
162
|
xy: AIXM.xy(lat: %q(47°51'33"N), long: %q(007°33'36"E)),
|
176
163
|
z: AIXM.z(500, :qnh),
|
177
|
-
type: :
|
164
|
+
type: :conventional,
|
178
165
|
f: AIXM.f(111, :mhz),
|
179
166
|
north: :geographic
|
180
167
|
).tap do |vordme|
|
@@ -190,7 +177,7 @@ module AIXM
|
|
190
177
|
name: 'VORTAC NAVAID',
|
191
178
|
xy: AIXM.xy(lat: %q(47°51'33"N), long: %q(007°33'36"E)),
|
192
179
|
z: AIXM.z(500, :qnh),
|
193
|
-
type: :
|
180
|
+
type: :conventional,
|
194
181
|
f: AIXM.f(111, :mhz),
|
195
182
|
north: :geographic
|
196
183
|
).tap do |vortac|
|
@@ -211,7 +198,6 @@ module AIXM
|
|
211
198
|
document.features << AIXM::Factory.ndb
|
212
199
|
document.features << AIXM::Factory.tacan
|
213
200
|
document.features << AIXM::Factory.vor
|
214
|
-
document.features << AIXM::Factory.dvor
|
215
201
|
document.features << AIXM::Factory.vordme
|
216
202
|
document.features << AIXM::Factory.vortac
|
217
203
|
end
|
@@ -158,7 +158,7 @@ describe AIXM::Document do
|
|
158
158
|
</Abd>
|
159
159
|
<!-- NavigationalAid: [DesignatedPoint:ICAO] DESIGNATED POINT NAVAID -->
|
160
160
|
<Dpn>
|
161
|
-
<DpnUid>
|
161
|
+
<DpnUid mid="5317882">
|
162
162
|
<codeId>DDD</codeId>
|
163
163
|
<geoLat>475133.00N</geoLat>
|
164
164
|
<geoLong>0073336.00E</geoLong>
|
@@ -176,7 +176,7 @@ describe AIXM::Document do
|
|
176
176
|
</Dpn>
|
177
177
|
<!-- NavigationalAid: [DME] DME NAVAID -->
|
178
178
|
<Dme>
|
179
|
-
<DmeUid>
|
179
|
+
<DmeUid mid="537506748">
|
180
180
|
<codeId>MMM</codeId>
|
181
181
|
<geoLat>475133.00N</geoLat>
|
182
182
|
<geoLong>0073336.00E</geoLong>
|
@@ -192,14 +192,15 @@ describe AIXM::Document do
|
|
192
192
|
</Dtt>
|
193
193
|
<txtRmk>dme navaid</txtRmk>
|
194
194
|
</Dme>
|
195
|
-
<!-- NavigationalAid: [Marker] MARKER NAVAID -->
|
195
|
+
<!-- NavigationalAid: [Marker:O] MARKER NAVAID -->
|
196
196
|
<Mkr>
|
197
|
-
<MkrUid>
|
197
|
+
<MkrUid mid="300437209">
|
198
198
|
<codeId>---</codeId>
|
199
199
|
<geoLat>475133.00N</geoLat>
|
200
200
|
<geoLong>0073336.00E</geoLong>
|
201
201
|
</MkrUid>
|
202
202
|
<OrgUid/>
|
203
|
+
<codePsnIls>O</codePsnIls>
|
203
204
|
<valFreq>75</valFreq>
|
204
205
|
<uomFreq>MHZ</uomFreq>
|
205
206
|
<txtName>MARKER NAVAID</txtName>
|
@@ -211,9 +212,9 @@ describe AIXM::Document do
|
|
211
212
|
</Mtt>
|
212
213
|
<txtRmk>marker navaid</txtRmk>
|
213
214
|
</Mkr>
|
214
|
-
<!-- NavigationalAid: [NDB] NDB NAVAID -->
|
215
|
+
<!-- NavigationalAid: [NDB:B] NDB NAVAID -->
|
215
216
|
<Ndb>
|
216
|
-
<NdbUid>
|
217
|
+
<NdbUid mid="782114926">
|
217
218
|
<codeId>NNN</codeId>
|
218
219
|
<geoLat>475133.00N</geoLat>
|
219
220
|
<geoLong>0073336.00E</geoLong>
|
@@ -222,6 +223,7 @@ describe AIXM::Document do
|
|
222
223
|
<txtName>NDB NAVAID</txtName>
|
223
224
|
<valFreq>555</valFreq>
|
224
225
|
<uomFreq>KHZ</uomFreq>
|
226
|
+
<codeClass>B</codeClass>
|
225
227
|
<codeDatum>WGE</codeDatum>
|
226
228
|
<valElev>500</valElev>
|
227
229
|
<uomDistVer>FT</uomDistVer>
|
@@ -232,7 +234,7 @@ describe AIXM::Document do
|
|
232
234
|
</Ndb>
|
233
235
|
<!-- NavigationalAid: [TACAN] TACAN NAVAID -->
|
234
236
|
<Tcn>
|
235
|
-
<TcnUid>
|
237
|
+
<TcnUid mid="648449590">
|
236
238
|
<codeId>TTT</codeId>
|
237
239
|
<geoLat>475133.00N</geoLat>
|
238
240
|
<geoLong>0073336.00E</geoLong>
|
@@ -250,7 +252,7 @@ describe AIXM::Document do
|
|
250
252
|
</Tcn>
|
251
253
|
<!-- NavigationalAid: [VOR:VOR] VOR NAVAID -->
|
252
254
|
<Vor>
|
253
|
-
<VorUid>
|
255
|
+
<VorUid mid="904391566">
|
254
256
|
<codeId>VVV</codeId>
|
255
257
|
<geoLat>475133.00N</geoLat>
|
256
258
|
<geoLong>0073336.00E</geoLong>
|
@@ -269,30 +271,9 @@ describe AIXM::Document do
|
|
269
271
|
</Vtt>
|
270
272
|
<txtRmk>vor navaid</txtRmk>
|
271
273
|
</Vor>
|
272
|
-
<!-- NavigationalAid: [VOR:DVOR] DOPPLER-VOR NAVAID -->
|
273
|
-
<Vor>
|
274
|
-
<VorUid>
|
275
|
-
<codeId>DVV</codeId>
|
276
|
-
<geoLat>475133.00N</geoLat>
|
277
|
-
<geoLong>0073336.00E</geoLong>
|
278
|
-
</VorUid>
|
279
|
-
<OrgUid/>
|
280
|
-
<txtName>DOPPLER-VOR NAVAID</txtName>
|
281
|
-
<codeType>DVOR</codeType>
|
282
|
-
<valFreq>111</valFreq>
|
283
|
-
<uomFreq>MHZ</uomFreq>
|
284
|
-
<codeTypeNorth>TRUE</codeTypeNorth>
|
285
|
-
<codeDatum>WGE</codeDatum>
|
286
|
-
<valElev>500</valElev>
|
287
|
-
<uomDistVer>FT</uomDistVer>
|
288
|
-
<Vtt>
|
289
|
-
<codeWorkHr>H24</codeWorkHr>
|
290
|
-
</Vtt>
|
291
|
-
<txtRmk>doppler-vor navaid</txtRmk>
|
292
|
-
</Vor>
|
293
274
|
<!-- NavigationalAid: [VOR:VOR] VOR/DME NAVAID -->
|
294
275
|
<Vor>
|
295
|
-
<VorUid>
|
276
|
+
<VorUid mid="428844269">
|
296
277
|
<codeId>VDD</codeId>
|
297
278
|
<geoLat>475133.00N</geoLat>
|
298
279
|
<geoLong>0073336.00E</geoLong>
|
@@ -313,13 +294,13 @@ describe AIXM::Document do
|
|
313
294
|
</Vor>
|
314
295
|
<!-- NavigationalAid: [DME] VOR/DME NAVAID -->
|
315
296
|
<Dme>
|
316
|
-
<DmeUid>
|
297
|
+
<DmeUid mid="284278140">
|
317
298
|
<codeId>VDD</codeId>
|
318
299
|
<geoLat>475133.00N</geoLat>
|
319
300
|
<geoLong>0073336.00E</geoLong>
|
320
301
|
</DmeUid>
|
321
302
|
<OrgUid/>
|
322
|
-
<VorUid>
|
303
|
+
<VorUid mid="428844269">
|
323
304
|
<codeId>VDD</codeId>
|
324
305
|
<geoLat>475133.00N</geoLat>
|
325
306
|
<geoLong>0073336.00E</geoLong>
|
@@ -336,7 +317,7 @@ describe AIXM::Document do
|
|
336
317
|
</Dme>
|
337
318
|
<!-- NavigationalAid: [VOR:VOR] VORTAC NAVAID -->
|
338
319
|
<Vor>
|
339
|
-
<VorUid>
|
320
|
+
<VorUid mid="305713874">
|
340
321
|
<codeId>VTT</codeId>
|
341
322
|
<geoLat>475133.00N</geoLat>
|
342
323
|
<geoLong>0073336.00E</geoLong>
|
@@ -357,13 +338,13 @@ describe AIXM::Document do
|
|
357
338
|
</Vor>
|
358
339
|
<!-- NavigationalAid: [TACAN] VORTAC NAVAID -->
|
359
340
|
<Tcn>
|
360
|
-
<TcnUid>
|
341
|
+
<TcnUid mid="595472802">
|
361
342
|
<codeId>VTT</codeId>
|
362
343
|
<geoLat>475133.00N</geoLat>
|
363
344
|
<geoLong>0073336.00E</geoLong>
|
364
345
|
</TcnUid>
|
365
346
|
<OrgUid/>
|
366
|
-
<VorUid>
|
347
|
+
<VorUid mid="305713874">
|
367
348
|
<codeId>VTT</codeId>
|
368
349
|
<geoLat>475133.00N</geoLat>
|
369
350
|
<geoLong>0073336.00E</geoLong>
|
@@ -489,7 +470,7 @@ describe AIXM::Document do
|
|
489
470
|
</Abd>
|
490
471
|
<!-- NavigationalAid: [DesignatedPoint:ICAO] DESIGNATED POINT NAVAID -->
|
491
472
|
<Dpn>
|
492
|
-
<DpnUid newEntity="true">
|
473
|
+
<DpnUid mid="5317882" newEntity="true">
|
493
474
|
<codeId>DDD</codeId>
|
494
475
|
<geoLat>47.85916667N</geoLat>
|
495
476
|
<geoLong>7.56000000E</geoLong>
|
@@ -507,7 +488,7 @@ describe AIXM::Document do
|
|
507
488
|
</Dpn>
|
508
489
|
<!-- NavigationalAid: [DME] DME NAVAID -->
|
509
490
|
<Dme>
|
510
|
-
<DmeUid newEntity="true">
|
491
|
+
<DmeUid mid="537506748" newEntity="true">
|
511
492
|
<codeId>MMM</codeId>
|
512
493
|
<geoLat>47.85916667N</geoLat>
|
513
494
|
<geoLong>7.56000000E</geoLong>
|
@@ -523,14 +504,15 @@ describe AIXM::Document do
|
|
523
504
|
</Dtt>
|
524
505
|
<txtRmk>dme navaid</txtRmk>
|
525
506
|
</Dme>
|
526
|
-
<!-- NavigationalAid: [Marker] MARKER NAVAID -->
|
507
|
+
<!-- NavigationalAid: [Marker:O] MARKER NAVAID -->
|
527
508
|
<Mkr>
|
528
|
-
<MkrUid newEntity="true">
|
509
|
+
<MkrUid mid="300437209" newEntity="true">
|
529
510
|
<codeId>---</codeId>
|
530
511
|
<geoLat>47.85916667N</geoLat>
|
531
512
|
<geoLong>7.56000000E</geoLong>
|
532
513
|
</MkrUid>
|
533
514
|
<OrgUid/>
|
515
|
+
<codePsnIls>O</codePsnIls>
|
534
516
|
<valFreq>75</valFreq>
|
535
517
|
<uomFreq>MHZ</uomFreq>
|
536
518
|
<txtName>MARKER NAVAID</txtName>
|
@@ -542,9 +524,9 @@ describe AIXM::Document do
|
|
542
524
|
</Mtt>
|
543
525
|
<txtRmk>marker navaid</txtRmk>
|
544
526
|
</Mkr>
|
545
|
-
<!-- NavigationalAid: [NDB] NDB NAVAID -->
|
527
|
+
<!-- NavigationalAid: [NDB:B] NDB NAVAID -->
|
546
528
|
<Ndb>
|
547
|
-
<NdbUid newEntity="true">
|
529
|
+
<NdbUid mid="782114926" newEntity="true">
|
548
530
|
<codeId>NNN</codeId>
|
549
531
|
<geoLat>47.85916667N</geoLat>
|
550
532
|
<geoLong>7.56000000E</geoLong>
|
@@ -553,6 +535,7 @@ describe AIXM::Document do
|
|
553
535
|
<txtName>NDB NAVAID</txtName>
|
554
536
|
<valFreq>555</valFreq>
|
555
537
|
<uomFreq>KHZ</uomFreq>
|
538
|
+
<codeClass>B</codeClass>
|
556
539
|
<codeDatum>WGE</codeDatum>
|
557
540
|
<valElev>500</valElev>
|
558
541
|
<uomDistVer>FT</uomDistVer>
|
@@ -563,7 +546,7 @@ describe AIXM::Document do
|
|
563
546
|
</Ndb>
|
564
547
|
<!-- NavigationalAid: [TACAN] TACAN NAVAID -->
|
565
548
|
<Tcn>
|
566
|
-
<TcnUid newEntity="true">
|
549
|
+
<TcnUid mid="648449590" newEntity="true">
|
567
550
|
<codeId>TTT</codeId>
|
568
551
|
<geoLat>47.85916667N</geoLat>
|
569
552
|
<geoLong>7.56000000E</geoLong>
|
@@ -581,7 +564,7 @@ describe AIXM::Document do
|
|
581
564
|
</Tcn>
|
582
565
|
<!-- NavigationalAid: [VOR:VOR] VOR NAVAID -->
|
583
566
|
<Vor>
|
584
|
-
<VorUid newEntity="true">
|
567
|
+
<VorUid mid="904391566" newEntity="true">
|
585
568
|
<codeId>VVV</codeId>
|
586
569
|
<geoLat>47.85916667N</geoLat>
|
587
570
|
<geoLong>7.56000000E</geoLong>
|
@@ -600,30 +583,9 @@ describe AIXM::Document do
|
|
600
583
|
</Vtt>
|
601
584
|
<txtRmk>vor navaid</txtRmk>
|
602
585
|
</Vor>
|
603
|
-
<!-- NavigationalAid: [VOR:DVOR] DOPPLER-VOR NAVAID -->
|
604
|
-
<Vor>
|
605
|
-
<VorUid newEntity="true">
|
606
|
-
<codeId>DVV</codeId>
|
607
|
-
<geoLat>47.85916667N</geoLat>
|
608
|
-
<geoLong>7.56000000E</geoLong>
|
609
|
-
</VorUid>
|
610
|
-
<OrgUid/>
|
611
|
-
<txtName>DOPPLER-VOR NAVAID</txtName>
|
612
|
-
<codeType>DVOR</codeType>
|
613
|
-
<valFreq>111</valFreq>
|
614
|
-
<uomFreq>MHZ</uomFreq>
|
615
|
-
<codeTypeNorth>TRUE</codeTypeNorth>
|
616
|
-
<codeDatum>WGE</codeDatum>
|
617
|
-
<valElev>500</valElev>
|
618
|
-
<uomDistVer>FT</uomDistVer>
|
619
|
-
<Vtt>
|
620
|
-
<codeWorkHr>H24</codeWorkHr>
|
621
|
-
</Vtt>
|
622
|
-
<txtRmk>doppler-vor navaid</txtRmk>
|
623
|
-
</Vor>
|
624
586
|
<!-- NavigationalAid: [VOR:VOR] VOR/DME NAVAID -->
|
625
587
|
<Vor>
|
626
|
-
<VorUid newEntity="true">
|
588
|
+
<VorUid mid="428844269" newEntity="true">
|
627
589
|
<codeId>VDD</codeId>
|
628
590
|
<geoLat>47.85916667N</geoLat>
|
629
591
|
<geoLong>7.56000000E</geoLong>
|
@@ -644,13 +606,13 @@ describe AIXM::Document do
|
|
644
606
|
</Vor>
|
645
607
|
<!-- NavigationalAid: [DME] VOR/DME NAVAID -->
|
646
608
|
<Dme>
|
647
|
-
<DmeUid newEntity="true">
|
609
|
+
<DmeUid mid="284278140" newEntity="true">
|
648
610
|
<codeId>VDD</codeId>
|
649
611
|
<geoLat>47.85916667N</geoLat>
|
650
612
|
<geoLong>7.56000000E</geoLong>
|
651
613
|
</DmeUid>
|
652
614
|
<OrgUid/>
|
653
|
-
<VorUid newEntity="true">
|
615
|
+
<VorUid mid="428844269" newEntity="true">
|
654
616
|
<codeId>VDD</codeId>
|
655
617
|
<geoLat>47.85916667N</geoLat>
|
656
618
|
<geoLong>7.56000000E</geoLong>
|
@@ -667,7 +629,7 @@ describe AIXM::Document do
|
|
667
629
|
</Dme>
|
668
630
|
<!-- NavigationalAid: [VOR:VOR] VORTAC NAVAID -->
|
669
631
|
<Vor>
|
670
|
-
<VorUid newEntity="true">
|
632
|
+
<VorUid mid="305713874" newEntity="true">
|
671
633
|
<codeId>VTT</codeId>
|
672
634
|
<geoLat>47.85916667N</geoLat>
|
673
635
|
<geoLong>7.56000000E</geoLong>
|
@@ -688,13 +650,13 @@ describe AIXM::Document do
|
|
688
650
|
</Vor>
|
689
651
|
<!-- NavigationalAid: [TACAN] VORTAC NAVAID -->
|
690
652
|
<Tcn>
|
691
|
-
<TcnUid newEntity="true">
|
653
|
+
<TcnUid mid="595472802" newEntity="true">
|
692
654
|
<codeId>VTT</codeId>
|
693
655
|
<geoLat>47.85916667N</geoLat>
|
694
656
|
<geoLong>7.56000000E</geoLong>
|
695
657
|
</TcnUid>
|
696
658
|
<OrgUid/>
|
697
|
-
<VorUid newEntity="true">
|
659
|
+
<VorUid mid="305713874" newEntity="true">
|
698
660
|
<codeId>VTT</codeId>
|
699
661
|
<geoLat>47.85916667N</geoLat>
|
700
662
|
<geoLong>7.56000000E</geoLong>
|
@@ -6,8 +6,12 @@ describe AIXM::Feature::NavigationalAid::DesignatedPoint do
|
|
6
6
|
AIXM::Factory.designated_point
|
7
7
|
end
|
8
8
|
|
9
|
+
let :digest do
|
10
|
+
subject.to_digest
|
11
|
+
end
|
12
|
+
|
9
13
|
describe :kind do
|
10
|
-
it "must return class
|
14
|
+
it "must return class/type combo" do
|
11
15
|
subject.kind.must_equal "DesignatedPoint:ICAO"
|
12
16
|
end
|
13
17
|
end
|
@@ -23,7 +27,7 @@ describe AIXM::Feature::NavigationalAid::DesignatedPoint do
|
|
23
27
|
subject.to_aixm(:ofm).must_equal <<~END
|
24
28
|
<!-- NavigationalAid: [DesignatedPoint:ICAO] DESIGNATED POINT NAVAID -->
|
25
29
|
<Dpn>
|
26
|
-
<DpnUid newEntity="true">
|
30
|
+
<DpnUid mid="#{digest}" newEntity="true">
|
27
31
|
<codeId>DDD</codeId>
|
28
32
|
<geoLat>47.85916667N</geoLat>
|
29
33
|
<geoLong>7.56000000E</geoLong>
|
@@ -6,8 +6,12 @@ describe AIXM::Feature::NavigationalAid::DME do
|
|
6
6
|
AIXM::Factory.dme
|
7
7
|
end
|
8
8
|
|
9
|
+
let :digest do
|
10
|
+
subject.to_digest
|
11
|
+
end
|
12
|
+
|
9
13
|
describe :kind do
|
10
|
-
it "must return class
|
14
|
+
it "must return class/type combo" do
|
11
15
|
subject.kind.must_equal "DME"
|
12
16
|
end
|
13
17
|
end
|
@@ -23,7 +27,7 @@ describe AIXM::Feature::NavigationalAid::DME do
|
|
23
27
|
subject.to_aixm(:ofm).must_equal <<~END
|
24
28
|
<!-- NavigationalAid: [DME] DME NAVAID -->
|
25
29
|
<Dme>
|
26
|
-
<DmeUid newEntity="true">
|
30
|
+
<DmeUid mid="#{digest}" newEntity="true">
|
27
31
|
<codeId>MMM</codeId>
|
28
32
|
<geoLat>47.85916667N</geoLat>
|
29
33
|
<geoLong>7.56000000E</geoLong>
|
@@ -1,34 +1,39 @@
|
|
1
1
|
require_relative '../../../../spec_helper'
|
2
2
|
|
3
3
|
describe AIXM::Feature::NavigationalAid::Marker do
|
4
|
-
context "complete" do
|
4
|
+
context "complete outer marker" do
|
5
5
|
subject do
|
6
6
|
AIXM::Factory.marker
|
7
7
|
end
|
8
8
|
|
9
|
+
let :digest do
|
10
|
+
subject.to_digest
|
11
|
+
end
|
12
|
+
|
9
13
|
describe :kind do
|
10
|
-
it "must return class
|
11
|
-
subject.kind.must_equal "Marker"
|
14
|
+
it "must return class/type combo" do
|
15
|
+
subject.kind.must_equal "Marker:O"
|
12
16
|
end
|
13
17
|
end
|
14
18
|
|
15
19
|
describe :to_digest do
|
16
20
|
it "must return digest of payload" do
|
17
|
-
subject.to_digest.must_equal
|
21
|
+
subject.to_digest.must_equal 300437209
|
18
22
|
end
|
19
23
|
end
|
20
24
|
|
21
25
|
describe :to_aixm do
|
22
26
|
it "must build correct XML with OFM extension" do
|
23
27
|
subject.to_aixm(:ofm).must_equal <<~END
|
24
|
-
<!-- NavigationalAid: [Marker] MARKER NAVAID -->
|
28
|
+
<!-- NavigationalAid: [Marker:O] MARKER NAVAID -->
|
25
29
|
<Mkr>
|
26
|
-
<MkrUid newEntity="true">
|
30
|
+
<MkrUid mid="#{digest}" newEntity="true">
|
27
31
|
<codeId>---</codeId>
|
28
32
|
<geoLat>47.85916667N</geoLat>
|
29
33
|
<geoLong>7.56000000E</geoLong>
|
30
34
|
</MkrUid>
|
31
35
|
<OrgUid/>
|
36
|
+
<codePsnIls>O</codePsnIls>
|
32
37
|
<valFreq>75</valFreq>
|
33
38
|
<uomFreq>MHZ</uomFreq>
|
34
39
|
<txtName>MARKER NAVAID</txtName>
|
@@ -44,4 +49,83 @@ describe AIXM::Feature::NavigationalAid::Marker do
|
|
44
49
|
end
|
45
50
|
end
|
46
51
|
end
|
52
|
+
|
53
|
+
context "complete middle marker" do
|
54
|
+
subject do
|
55
|
+
AIXM::Factory.marker.tap do |marker|
|
56
|
+
marker.type = :middle
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe :kind do
|
61
|
+
it "must return class/type combo" do
|
62
|
+
subject.kind.must_equal "Marker:M"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe :to_aixm do
|
67
|
+
it "must build correct XML" do
|
68
|
+
subject.to_aixm.must_match %r(<codePsnIls>M</codePsnIls>)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
context "complete middle marker" do
|
73
|
+
subject do
|
74
|
+
AIXM::Factory.marker.tap do |marker|
|
75
|
+
marker.type = :middle
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe :kind do
|
80
|
+
it "must return class/type combo" do
|
81
|
+
subject.kind.must_equal "Marker:M"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe :to_aixm do
|
86
|
+
it "must build correct XML" do
|
87
|
+
subject.to_aixm.must_match %r(<codePsnIls>M</codePsnIls>)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
context "complete inner marker" do
|
93
|
+
subject do
|
94
|
+
AIXM::Factory.marker.tap do |marker|
|
95
|
+
marker.type = :inner
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
describe :kind do
|
100
|
+
it "must return class/type combo" do
|
101
|
+
subject.kind.must_equal "Marker:I"
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
describe :to_aixm do
|
106
|
+
it "must build correct XML" do
|
107
|
+
subject.to_aixm.must_match %r(<codePsnIls>I</codePsnIls>)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
context "complete backcourse marker" do
|
113
|
+
subject do
|
114
|
+
AIXM::Factory.marker.tap do |marker|
|
115
|
+
marker.type = :backcourse
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe :kind do
|
120
|
+
it "must return class/type combo" do
|
121
|
+
subject.kind.must_equal "Marker:C"
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
describe :to_aixm do
|
126
|
+
it "must build correct XML" do
|
127
|
+
subject.to_aixm.must_match %r(<codePsnIls>C</codePsnIls>)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
47
131
|
end
|
@@ -7,33 +7,38 @@ describe AIXM::Feature::NavigationalAid::NDB do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
it "won't accept invalid arguments" do
|
10
|
-
-> { AIXM.ndb(id: 'N', name: 'NDB', xy: AIXM::Factory.xy, f:
|
10
|
+
-> { AIXM.ndb(id: 'N', name: 'NDB', xy: AIXM::Factory.xy, type: :foo, f: f) }.must_raise ArgumentError
|
11
|
+
-> { AIXM.ndb(id: 'N', name: 'NDB', xy: AIXM::Factory.xy, type: :en_route, f: 0) }.must_raise ArgumentError
|
11
12
|
end
|
12
13
|
end
|
13
14
|
|
14
|
-
context "complete" do
|
15
|
+
context "complete en-route NDB" do
|
15
16
|
subject do
|
16
17
|
AIXM::Factory.ndb
|
17
18
|
end
|
18
19
|
|
20
|
+
let :digest do
|
21
|
+
subject.to_digest
|
22
|
+
end
|
23
|
+
|
19
24
|
describe :kind do
|
20
|
-
it "must return class
|
21
|
-
subject.kind.must_equal "NDB"
|
25
|
+
it "must return class/type combo" do
|
26
|
+
subject.kind.must_equal "NDB:B"
|
22
27
|
end
|
23
28
|
end
|
24
29
|
|
25
30
|
describe :to_digest do
|
26
31
|
it "must return digest of payload" do
|
27
|
-
subject.to_digest.must_equal
|
32
|
+
subject.to_digest.must_equal 782114926
|
28
33
|
end
|
29
34
|
end
|
30
35
|
|
31
36
|
describe :to_aixm do
|
32
37
|
it "must build correct XML with OFM extension" do
|
33
38
|
subject.to_aixm(:ofm).must_equal <<~END
|
34
|
-
<!-- NavigationalAid: [NDB] NDB NAVAID -->
|
39
|
+
<!-- NavigationalAid: [NDB:B] NDB NAVAID -->
|
35
40
|
<Ndb>
|
36
|
-
<NdbUid newEntity="true">
|
41
|
+
<NdbUid mid="#{digest}" newEntity="true">
|
37
42
|
<codeId>NNN</codeId>
|
38
43
|
<geoLat>47.85916667N</geoLat>
|
39
44
|
<geoLong>7.56000000E</geoLong>
|
@@ -42,6 +47,7 @@ describe AIXM::Feature::NavigationalAid::NDB do
|
|
42
47
|
<txtName>NDB NAVAID</txtName>
|
43
48
|
<valFreq>555</valFreq>
|
44
49
|
<uomFreq>KHZ</uomFreq>
|
50
|
+
<codeClass>B</codeClass>
|
45
51
|
<codeDatum>WGE</codeDatum>
|
46
52
|
<valElev>500</valElev>
|
47
53
|
<uomDistVer>FT</uomDistVer>
|
@@ -54,4 +60,44 @@ describe AIXM::Feature::NavigationalAid::NDB do
|
|
54
60
|
end
|
55
61
|
end
|
56
62
|
end
|
63
|
+
|
64
|
+
context "complete locator NDB" do
|
65
|
+
subject do
|
66
|
+
AIXM::Factory.ndb.tap do |ndb|
|
67
|
+
ndb.type = :locator
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe :kind do
|
72
|
+
it "must return class/type combo" do
|
73
|
+
subject.kind.must_equal "NDB:L"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe :to_aixm do
|
78
|
+
it "must build correct XML with OFM extension" do
|
79
|
+
subject.to_aixm(:ofm).must_match %r(<codeClass>L</codeClass>)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context "complete marine NDB" do
|
85
|
+
subject do
|
86
|
+
AIXM::Factory.ndb.tap do |ndb|
|
87
|
+
ndb.type = :marine
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe :kind do
|
92
|
+
it "must return class/type combo" do
|
93
|
+
subject.kind.must_equal "NDB:M"
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe :to_aixm do
|
98
|
+
it "must build correct XML with OFM extension" do
|
99
|
+
subject.to_aixm(:ofm).must_match %r(<codeClass>M</codeClass>)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
57
103
|
end
|
@@ -6,8 +6,12 @@ describe AIXM::Feature::NavigationalAid::TACAN do
|
|
6
6
|
AIXM::Factory.tacan
|
7
7
|
end
|
8
8
|
|
9
|
+
let :digest do
|
10
|
+
subject.to_digest
|
11
|
+
end
|
12
|
+
|
9
13
|
describe :kind do
|
10
|
-
it "must return class
|
14
|
+
it "must return class/type combo" do
|
11
15
|
subject.kind.must_equal "TACAN"
|
12
16
|
end
|
13
17
|
end
|
@@ -23,7 +27,7 @@ describe AIXM::Feature::NavigationalAid::TACAN do
|
|
23
27
|
subject.to_aixm(:ofm).must_equal <<~END
|
24
28
|
<!-- NavigationalAid: [TACAN] TACAN NAVAID -->
|
25
29
|
<Tcn>
|
26
|
-
<TcnUid newEntity="true">
|
30
|
+
<TcnUid mid="#{digest}" newEntity="true">
|
27
31
|
<codeId>TTT</codeId>
|
28
32
|
<geoLat>47.85916667N</geoLat>
|
29
33
|
<geoLong>7.56000000E</geoLong>
|
@@ -8,25 +8,29 @@ describe AIXM::Feature::NavigationalAid::VOR do
|
|
8
8
|
|
9
9
|
it "won't accept invalid arguments" do
|
10
10
|
-> { AIXM.vor(id: 'V', name: 'VOR', xy: AIXM::Factory.xy, type: :foo, f: f, north: :geographic) }.must_raise ArgumentError
|
11
|
-
-> { AIXM.vor(id: 'V', name: 'VOR', xy: AIXM::Factory.xy, type: :
|
12
|
-
-> { AIXM.vor(id: 'V', name: 'VOR', xy: AIXM::Factory.xy, type: :
|
11
|
+
-> { AIXM.vor(id: 'V', name: 'VOR', xy: AIXM::Factory.xy, type: :conventional, f: 0, north: :geographic) }.must_raise ArgumentError
|
12
|
+
-> { AIXM.vor(id: 'V', name: 'VOR', xy: AIXM::Factory.xy, type: :conventional, f: f, north: :foobar) }.must_raise ArgumentError
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
context "complete VOR" do
|
16
|
+
context "complete conventional VOR" do
|
17
17
|
subject do
|
18
18
|
AIXM::Factory.vor
|
19
19
|
end
|
20
20
|
|
21
|
+
let :digest do
|
22
|
+
subject.to_digest
|
23
|
+
end
|
24
|
+
|
21
25
|
describe :kind do
|
22
|
-
it "must return class
|
26
|
+
it "must return class/type combo" do
|
23
27
|
subject.kind.must_equal "VOR:VOR"
|
24
28
|
end
|
25
29
|
end
|
26
30
|
|
27
31
|
describe :to_digest do
|
28
32
|
it "must return digest of payload" do
|
29
|
-
subject.to_digest.must_equal
|
33
|
+
subject.to_digest.must_equal 904391566
|
30
34
|
end
|
31
35
|
end
|
32
36
|
|
@@ -35,7 +39,7 @@ describe AIXM::Feature::NavigationalAid::VOR do
|
|
35
39
|
subject.to_aixm(:ofm).must_equal <<~END
|
36
40
|
<!-- NavigationalAid: [VOR:VOR] VOR NAVAID -->
|
37
41
|
<Vor>
|
38
|
-
<VorUid newEntity="true">
|
42
|
+
<VorUid mid="#{digest}" newEntity="true">
|
39
43
|
<codeId>VVV</codeId>
|
40
44
|
<geoLat>47.85916667N</geoLat>
|
41
45
|
<geoLong>7.56000000E</geoLong>
|
@@ -59,6 +63,58 @@ describe AIXM::Feature::NavigationalAid::VOR do
|
|
59
63
|
end
|
60
64
|
end
|
61
65
|
|
66
|
+
context "complete Doppler VOR" do
|
67
|
+
subject do
|
68
|
+
AIXM::Factory.vor.tap do |vor|
|
69
|
+
vor.type = :doppler
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
let :digest do
|
74
|
+
subject.to_digest
|
75
|
+
end
|
76
|
+
|
77
|
+
describe :kind do
|
78
|
+
it "must return class/type combo" do
|
79
|
+
subject.kind.must_equal "VOR:DVOR"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe :to_digest do
|
84
|
+
it "must return digest of payload" do
|
85
|
+
subject.to_digest.must_equal 293163781
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe :to_aixm do
|
90
|
+
it "must build correct XML of VOR with OFM extension" do
|
91
|
+
subject.to_aixm(:ofm).must_equal <<~END
|
92
|
+
<!-- NavigationalAid: [VOR:DVOR] VOR NAVAID -->
|
93
|
+
<Vor>
|
94
|
+
<VorUid mid="#{digest}" newEntity="true">
|
95
|
+
<codeId>VVV</codeId>
|
96
|
+
<geoLat>47.85916667N</geoLat>
|
97
|
+
<geoLong>7.56000000E</geoLong>
|
98
|
+
</VorUid>
|
99
|
+
<OrgUid/>
|
100
|
+
<txtName>VOR NAVAID</txtName>
|
101
|
+
<codeType>DVOR</codeType>
|
102
|
+
<valFreq>111</valFreq>
|
103
|
+
<uomFreq>MHZ</uomFreq>
|
104
|
+
<codeTypeNorth>TRUE</codeTypeNorth>
|
105
|
+
<codeDatum>WGE</codeDatum>
|
106
|
+
<valElev>500</valElev>
|
107
|
+
<uomDistVer>FT</uomDistVer>
|
108
|
+
<Vtt>
|
109
|
+
<codeWorkHr>H24</codeWorkHr>
|
110
|
+
</Vtt>
|
111
|
+
<txtRmk>vor navaid</txtRmk>
|
112
|
+
</Vor>
|
113
|
+
END
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
62
118
|
context "complete VOR/DME" do
|
63
119
|
subject do
|
64
120
|
AIXM::Factory.vor.tap do |vor|
|
@@ -68,15 +124,19 @@ describe AIXM::Feature::NavigationalAid::VOR do
|
|
68
124
|
end
|
69
125
|
end
|
70
126
|
|
127
|
+
let :digests do
|
128
|
+
[subject.to_digest, subject.dme.to_digest]
|
129
|
+
end
|
130
|
+
|
71
131
|
describe :kind do
|
72
|
-
it "must return class
|
132
|
+
it "must return class/type combo" do
|
73
133
|
subject.kind.must_equal "VOR:VOR"
|
74
134
|
end
|
75
135
|
end
|
76
136
|
|
77
137
|
describe :to_digest do
|
78
138
|
it "must return digest of payload" do
|
79
|
-
subject.to_digest.must_equal
|
139
|
+
subject.to_digest.must_equal 604205702
|
80
140
|
end
|
81
141
|
end
|
82
142
|
|
@@ -85,7 +145,7 @@ describe AIXM::Feature::NavigationalAid::VOR do
|
|
85
145
|
subject.to_aixm(:ofm).must_equal <<~END
|
86
146
|
<!-- NavigationalAid: [VOR:VOR] VOR/DME NAVAID -->
|
87
147
|
<Vor>
|
88
|
-
<VorUid newEntity="true">
|
148
|
+
<VorUid mid="#{digests.first}" newEntity="true">
|
89
149
|
<codeId>VVV</codeId>
|
90
150
|
<geoLat>47.85916667N</geoLat>
|
91
151
|
<geoLong>7.56000000E</geoLong>
|
@@ -106,13 +166,13 @@ describe AIXM::Feature::NavigationalAid::VOR do
|
|
106
166
|
</Vor>
|
107
167
|
<!-- NavigationalAid: [DME] VOR/DME NAVAID -->
|
108
168
|
<Dme>
|
109
|
-
<DmeUid newEntity="true">
|
169
|
+
<DmeUid mid="#{digests.last}" newEntity="true">
|
110
170
|
<codeId>VVV</codeId>
|
111
171
|
<geoLat>47.85916667N</geoLat>
|
112
172
|
<geoLong>7.56000000E</geoLong>
|
113
173
|
</DmeUid>
|
114
174
|
<OrgUid/>
|
115
|
-
<VorUid newEntity="true">
|
175
|
+
<VorUid mid="#{digests.first}" newEntity="true">
|
116
176
|
<codeId>VVV</codeId>
|
117
177
|
<geoLat>47.85916667N</geoLat>
|
118
178
|
<geoLong>7.56000000E</geoLong>
|
@@ -141,15 +201,19 @@ describe AIXM::Feature::NavigationalAid::VOR do
|
|
141
201
|
end
|
142
202
|
end
|
143
203
|
|
204
|
+
let :digests do
|
205
|
+
[subject.to_digest, subject.tacan.to_digest]
|
206
|
+
end
|
207
|
+
|
144
208
|
describe :kind do
|
145
|
-
it "must return class
|
209
|
+
it "must return class/type combo" do
|
146
210
|
subject.kind.must_equal "VOR:VOR"
|
147
211
|
end
|
148
212
|
end
|
149
213
|
|
150
214
|
describe :to_digest do
|
151
215
|
it "must return digest of payload" do
|
152
|
-
subject.to_digest.must_equal
|
216
|
+
subject.to_digest.must_equal 339710051
|
153
217
|
end
|
154
218
|
end
|
155
219
|
|
@@ -158,7 +222,7 @@ describe AIXM::Feature::NavigationalAid::VOR do
|
|
158
222
|
subject.to_aixm(:ofm).must_equal <<~END
|
159
223
|
<!-- NavigationalAid: [VOR:VOR] VORTAC NAVAID -->
|
160
224
|
<Vor>
|
161
|
-
<VorUid newEntity="true">
|
225
|
+
<VorUid mid="#{digests.first}" newEntity="true">
|
162
226
|
<codeId>VVV</codeId>
|
163
227
|
<geoLat>47.85916667N</geoLat>
|
164
228
|
<geoLong>7.56000000E</geoLong>
|
@@ -179,13 +243,13 @@ describe AIXM::Feature::NavigationalAid::VOR do
|
|
179
243
|
</Vor>
|
180
244
|
<!-- NavigationalAid: [TACAN] VORTAC NAVAID -->
|
181
245
|
<Tcn>
|
182
|
-
<TcnUid newEntity="true">
|
246
|
+
<TcnUid mid="#{digests.last}" newEntity="true">
|
183
247
|
<codeId>VVV</codeId>
|
184
248
|
<geoLat>47.85916667N</geoLat>
|
185
249
|
<geoLong>7.56000000E</geoLong>
|
186
250
|
</TcnUid>
|
187
251
|
<OrgUid/>
|
188
|
-
<VorUid newEntity="true">
|
252
|
+
<VorUid mid="#{digests.first}" newEntity="true">
|
189
253
|
<codeId>VVV</codeId>
|
190
254
|
<geoLat>47.85916667N</geoLat>
|
191
255
|
<geoLong>7.56000000E</geoLong>
|
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.2.
|
4
|
+
version: 0.2.3
|
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-01-
|
11
|
+
date: 2018-01-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|