aixm 0.2.2 → 0.2.3
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 +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
|