aixm 0.3.7 → 0.3.8
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/.github/workflows/test.yml +26 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +17 -4
- data/README.md +23 -5
- data/lib/aixm/component/fato.rb +3 -3
- data/lib/aixm/component/frequency.rb +1 -1
- data/lib/aixm/component/geometry/border.rb +9 -3
- data/lib/aixm/component/helipad.rb +1 -1
- data/lib/aixm/component/lighting.rb +1 -1
- data/lib/aixm/component/runway.rb +4 -7
- data/lib/aixm/config.rb +2 -1
- data/lib/aixm/document.rb +1 -0
- data/lib/aixm/feature/address.rb +1 -1
- data/lib/aixm/feature/airport.rb +13 -4
- data/lib/aixm/feature/airspace.rb +11 -8
- 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 +1 -1
- data/lib/aixm/feature/navigational_aid/ndb.rb +1 -1
- data/lib/aixm/feature/navigational_aid/tacan.rb +1 -1
- data/lib/aixm/feature/navigational_aid/vor.rb +1 -1
- data/lib/aixm/feature/obstacle.rb +1 -1
- data/lib/aixm/feature/obstacle_group.rb +1 -1
- data/lib/aixm/feature/organisation.rb +1 -1
- data/lib/aixm/feature/service.rb +1 -1
- data/lib/aixm/feature/unit.rb +1 -1
- data/lib/aixm/refinements.rb +39 -8
- data/lib/aixm/version.rb +1 -1
- data/rakefile.rb +22 -8
- data/spec/lib/aixm/a_spec.rb +55 -55
- data/spec/lib/aixm/component/fato_spec.rb +30 -23
- data/spec/lib/aixm/component/frequency_spec.rb +12 -13
- data/spec/lib/aixm/component/geometry/arc_spec.rb +7 -9
- data/spec/lib/aixm/component/geometry/border_spec.rb +8 -3
- data/spec/lib/aixm/component/geometry/circle_spec.rb +6 -8
- data/spec/lib/aixm/component/geometry/point_spec.rb +2 -4
- data/spec/lib/aixm/component/geometry_spec.rb +57 -62
- data/spec/lib/aixm/component/helipad_spec.rb +25 -19
- data/spec/lib/aixm/component/layer_spec.rb +17 -19
- data/spec/lib/aixm/component/lighting_spec.rb +21 -15
- data/spec/lib/aixm/component/runway_spec.rb +44 -37
- data/spec/lib/aixm/component/surface_spec.rb +24 -24
- data/spec/lib/aixm/component/timetable_spec.rb +7 -9
- data/spec/lib/aixm/component/vertical_limits_spec.rb +9 -12
- data/spec/lib/aixm/config_spec.rb +8 -8
- data/spec/lib/aixm/d_spec.rb +28 -28
- data/spec/lib/aixm/document_spec.rb +46 -37
- data/spec/lib/aixm/errors_spec.rb +2 -2
- data/spec/lib/aixm/f_spec.rb +16 -16
- data/spec/lib/aixm/feature/address_spec.rb +12 -7
- data/spec/lib/aixm/feature/airport_spec.rb +80 -74
- data/spec/lib/aixm/feature/airspace_spec.rb +32 -28
- data/spec/lib/aixm/feature/navigational_aid/designated_point_spec.rb +16 -11
- data/spec/lib/aixm/feature/navigational_aid/dme_spec.rb +22 -16
- data/spec/lib/aixm/feature/navigational_aid/marker_spec.rb +13 -7
- data/spec/lib/aixm/feature/navigational_aid/ndb_spec.rb +15 -9
- data/spec/lib/aixm/feature/navigational_aid/tacan_spec.rb +22 -16
- data/spec/lib/aixm/feature/navigational_aid/vor_spec.rb +21 -15
- data/spec/lib/aixm/feature/navigational_aid_spec.rb +6 -6
- data/spec/lib/aixm/feature/obstacle_group_spec.rb +25 -21
- data/spec/lib/aixm/feature/obstacle_spec.rb +47 -42
- data/spec/lib/aixm/feature/organisation_spec.rb +16 -10
- data/spec/lib/aixm/feature/service_spec.rb +9 -9
- data/spec/lib/aixm/feature/unit_spec.rb +21 -13
- data/spec/lib/aixm/feature_spec.rb +5 -5
- data/spec/lib/aixm/p_spec.rb +37 -37
- data/spec/lib/aixm/refinements_spec.rb +164 -115
- data/spec/lib/aixm/version_spec.rb +1 -1
- data/spec/lib/aixm/w_spec.rb +28 -28
- data/spec/lib/aixm/xy_spec.rb +34 -34
- data/spec/lib/aixm/z_spec.rb +19 -19
- data/spec/macros/marking.rb +3 -3
- data/spec/macros/organisation.rb +2 -2
- data/spec/macros/remarks.rb +3 -3
- data/spec/macros/timetable.rb +2 -2
- data/spec/macros/xy.rb +2 -2
- data/spec/macros/z_qnh.rb +2 -2
- data/spec/spec_helper.rb +7 -0
- metadata +3 -3
- data/.travis.yml +0 -8
@@ -9,81 +9,81 @@ describe AIXM::Feature::Airspace do
|
|
9
9
|
|
10
10
|
describe :initialize do
|
11
11
|
it "sets defaults" do
|
12
|
-
subject.id.must_equal 'C55466EC'
|
13
|
-
subject.layers.must_equal []
|
14
|
-
subject.geometry.must_be_instance_of AIXM::Component::Geometry
|
12
|
+
_(subject.id).must_equal 'C55466EC'
|
13
|
+
_(subject.layers).must_equal []
|
14
|
+
_(subject.geometry).must_be_instance_of AIXM::Component::Geometry
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
18
|
describe :id= do
|
19
19
|
it "fails on invalid values" do
|
20
|
-
[:foobar, 123].wont_be_written_to subject, :id
|
20
|
+
_([:foobar, 123]).wont_be_written_to subject, :id
|
21
21
|
end
|
22
22
|
|
23
23
|
it "falls back to id derived from digest of type, local_type and name" do
|
24
|
-
subject.tap { |s| s.id = nil }.id.must_equal 'C55466EC'
|
24
|
+
_(subject.tap { |s| s.id = nil }.id).must_equal 'C55466EC'
|
25
25
|
end
|
26
26
|
|
27
27
|
it "upcases value" do
|
28
|
-
subject.tap { |s| s.id = 'löl' }.id.must_equal 'LOEL'
|
28
|
+
_(subject.tap { |s| s.id = 'löl' }.id).must_equal 'LOEL'
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
32
|
describe :type= do
|
33
33
|
it "fails on invalid values" do
|
34
|
-
[nil, :foobar, 123].wont_be_written_to subject, :type
|
34
|
+
_([nil, :foobar, 123]).wont_be_written_to subject, :type
|
35
35
|
end
|
36
36
|
|
37
37
|
it "looks up valid values" do
|
38
|
-
subject.tap { |s| s.type = :danger_area }.type.must_equal :danger_area
|
39
|
-
subject.tap { |s| s.type = :P }.type.must_equal :prohibited_area
|
38
|
+
_(subject.tap { |s| s.type = :danger_area }.type).must_equal :danger_area
|
39
|
+
_(subject.tap { |s| s.type = :P }.type).must_equal :prohibited_area
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
43
|
describe :local_type= do
|
44
44
|
it "fails on invalid values" do
|
45
|
-
[:foobar, 123].wont_be_written_to subject, :local_type
|
45
|
+
_([:foobar, 123]).wont_be_written_to subject, :local_type
|
46
46
|
end
|
47
47
|
|
48
48
|
it "accepts nil value" do
|
49
|
-
[nil].must_be_written_to subject, :local_type
|
49
|
+
_([nil]).must_be_written_to subject, :local_type
|
50
50
|
end
|
51
51
|
|
52
52
|
it "upcases value" do
|
53
|
-
subject.tap { |s| s.local_type = 'löl' }.local_type.must_equal 'LOEL'
|
53
|
+
_(subject.tap { |s| s.local_type = 'löl' }.local_type).must_equal 'LOEL'
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
57
|
describe :name= do
|
58
58
|
it "fails on invalid values" do
|
59
|
-
[:foobar, 123].wont_be_written_to subject, :name
|
59
|
+
_([:foobar, 123]).wont_be_written_to subject, :name
|
60
60
|
end
|
61
61
|
|
62
62
|
it "accepts nil value" do
|
63
|
-
[nil].must_be_written_to subject, :name
|
63
|
+
_([nil]).must_be_written_to subject, :name
|
64
64
|
end
|
65
65
|
|
66
66
|
it "upcases value" do
|
67
|
-
subject.tap { |s| s.name = 'löl' }.name.must_equal 'LOEL'
|
67
|
+
_(subject.tap { |s| s.name = 'löl' }.name).must_equal 'LOEL'
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
71
|
describe :to_uid do
|
72
72
|
it "builds with arbitrary tag" do
|
73
|
-
subject.to_uid.must_match(/<AseUid>/)
|
74
|
-
subject.to_uid(as: :FooBar).must_match(/<FooBar>/)
|
73
|
+
_(subject.to_uid).must_match(/<AseUid>/)
|
74
|
+
_(subject.to_uid(as: :FooBar)).must_match(/<FooBar>/)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
78
|
describe :to_xml do
|
79
79
|
it "fails to build AIXM since geometry is not closed" do
|
80
80
|
subject.layers << AIXM::Factory.layer
|
81
|
-
|
81
|
+
_{ subject.to_xml }.must_raise AIXM::GeometryError
|
82
82
|
end
|
83
83
|
|
84
84
|
it "fails to build AIXM since layers are not defined" do
|
85
85
|
subject.geometry = AIXM::Factory.circle_geometry
|
86
|
-
|
86
|
+
_{ subject.to_xml }.must_raise AIXM::LayerError
|
87
87
|
end
|
88
88
|
end
|
89
89
|
end
|
@@ -98,18 +98,15 @@ describe AIXM::Feature::Airspace do
|
|
98
98
|
|
99
99
|
describe :to_xml do
|
100
100
|
it "builds correct AIXM without id" do
|
101
|
-
|
102
|
-
subject.to_xml.must_match(%r{<codeId>C55466EC</codeId>})
|
101
|
+
_(subject.to_xml).must_match(%r{<codeId>C55466EC</codeId>})
|
103
102
|
end
|
104
103
|
|
105
104
|
it "builds correct AIXM without short name" do
|
106
|
-
|
107
|
-
subject.to_xml.wont_match(/<txtLocalType>/)
|
105
|
+
_(subject.to_xml).wont_match(/<txtLocalType>/)
|
108
106
|
end
|
109
107
|
|
110
108
|
it "builds correct AIXM with identical name and short name" do
|
111
|
-
|
112
|
-
subject.to_xml.wont_match(/<txtLocalType>/)
|
109
|
+
_(subject.to_xml).wont_match(/<txtLocalType>/)
|
113
110
|
end
|
114
111
|
end
|
115
112
|
end
|
@@ -122,7 +119,7 @@ describe AIXM::Feature::Airspace do
|
|
122
119
|
describe :to_xml do
|
123
120
|
it "builds correct complete OFMX" do
|
124
121
|
AIXM.ofmx!
|
125
|
-
subject.to_xml.must_equal <<~"END"
|
122
|
+
_(subject.to_xml).must_equal <<~"END"
|
126
123
|
<!-- Airspace: [D] POLYGON AIRSPACE -->
|
127
124
|
<Ase source="LF|GEN|0.0 FACTORY|0|0">
|
128
125
|
<AseUid>
|
@@ -189,7 +186,7 @@ describe AIXM::Feature::Airspace do
|
|
189
186
|
it "builds correct minimal OFMX" do
|
190
187
|
AIXM.ofmx!
|
191
188
|
subject.local_type = subject.name = nil
|
192
|
-
subject.to_xml.must_equal <<~"END"
|
189
|
+
_(subject.to_xml).must_equal <<~"END"
|
193
190
|
<!-- Airspace: [D] UNNAMED -->
|
194
191
|
<Ase source="LF|GEN|0.0 FACTORY|0|0">
|
195
192
|
<AseUid>
|
@@ -251,6 +248,13 @@ describe AIXM::Feature::Airspace do
|
|
251
248
|
END
|
252
249
|
end
|
253
250
|
end
|
251
|
+
|
252
|
+
it "builds OFMX with mid" do
|
253
|
+
AIXM.ofmx!
|
254
|
+
AIXM.config.mid_region = 'LF'
|
255
|
+
_(subject.to_xml).must_match /<AseUid mid="8894c821-b486-8128-48f2-a47c2e9f4c13">/
|
256
|
+
# _(subject.to_xml).must_match /<AbdUid mid="">/
|
257
|
+
end
|
254
258
|
end
|
255
259
|
|
256
260
|
context "with two layers" do
|
@@ -263,7 +267,7 @@ describe AIXM::Feature::Airspace do
|
|
263
267
|
describe :to_xml do
|
264
268
|
it "builds correct OFMX" do
|
265
269
|
AIXM.ofmx!
|
266
|
-
subject.to_xml.must_equal <<~"END"
|
270
|
+
_(subject.to_xml).must_equal <<~"END"
|
267
271
|
<!-- Airspace: [D] POLYGON AIRSPACE -->
|
268
272
|
<Ase source="LF|GEN|0.0 FACTORY|0|0">
|
269
273
|
<AseUid>
|
@@ -7,35 +7,35 @@ describe AIXM::Feature::NavigationalAid::DesignatedPoint do
|
|
7
7
|
|
8
8
|
describe :type= do
|
9
9
|
it "fails on invalid values" do
|
10
|
-
[nil, :foobar, 123].wont_be_written_to subject, :type
|
10
|
+
_([nil, :foobar, 123]).wont_be_written_to subject, :type
|
11
11
|
end
|
12
12
|
|
13
13
|
it "looks up valid values" do
|
14
|
-
subject.tap { |s| s.type = :icao }.type.must_equal :icao
|
15
|
-
subject.tap { |s| s.type = :'VFR-RP' }.type.must_equal :vfr_reporting_point
|
14
|
+
_(subject.tap { |s| s.type = :icao }.type).must_equal :icao
|
15
|
+
_(subject.tap { |s| s.type = :'VFR-RP' }.type).must_equal :vfr_reporting_point
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
describe :airport= do
|
20
20
|
it "fails on invalid values" do
|
21
|
-
[:foobar, 123].wont_be_written_to subject, :airport
|
21
|
+
_([:foobar, 123]).wont_be_written_to subject, :airport
|
22
22
|
end
|
23
23
|
|
24
24
|
it "accepts valid values" do
|
25
|
-
[nil, AIXM::Factory.airport].must_be_written_to subject, :airport
|
25
|
+
_([nil, AIXM::Factory.airport]).must_be_written_to subject, :airport
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
describe :kind do
|
30
30
|
it "must return class/type combo" do
|
31
|
-
subject.kind.must_equal "DesignatedPoint:VFR-RP"
|
31
|
+
_(subject.kind).must_equal "DesignatedPoint:VFR-RP"
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
35
|
describe :to_xml do
|
36
36
|
it "builds correct complete OFMX" do
|
37
37
|
AIXM.ofmx!
|
38
|
-
subject.to_xml.must_equal <<~END
|
38
|
+
_(subject.to_xml).must_equal <<~END
|
39
39
|
<!-- NavigationalAid: [DesignatedPoint:VFR-RP] DDD / DESIGNATED POINT NAVAID -->
|
40
40
|
<Dpn source="LF|GEN|0.0 FACTORY|0|0">
|
41
41
|
<DpnUid>
|
@@ -57,7 +57,7 @@ describe AIXM::Feature::NavigationalAid::DesignatedPoint do
|
|
57
57
|
it "builds correct minimal OFMX" do
|
58
58
|
AIXM.ofmx!
|
59
59
|
subject.name = subject.remarks = nil
|
60
|
-
subject.to_xml.must_equal <<~END
|
60
|
+
_(subject.to_xml).must_equal <<~END
|
61
61
|
<!-- NavigationalAid: [DesignatedPoint:VFR-RP] DDD -->
|
62
62
|
<Dpn source="LF|GEN|0.0 FACTORY|0|0">
|
63
63
|
<DpnUid>
|
@@ -74,9 +74,14 @@ describe AIXM::Feature::NavigationalAid::DesignatedPoint do
|
|
74
74
|
END
|
75
75
|
end
|
76
76
|
|
77
|
-
it "builds
|
78
|
-
AIXM.
|
79
|
-
|
77
|
+
it "builds OFMX with mid" do
|
78
|
+
AIXM.ofmx!
|
79
|
+
AIXM.config.mid_region = 'LF'
|
80
|
+
_(subject.to_xml).must_match /<DpnUid mid="b2977fe4-c591-0e72-8a5f-2e30d80f92d6">/
|
81
|
+
end
|
82
|
+
|
83
|
+
it "builds correct complete AIXM" do
|
84
|
+
_(subject.to_xml).must_equal <<~END
|
80
85
|
<!-- NavigationalAid: [DesignatedPoint:VFR-RP] DDD / DESIGNATED POINT NAVAID -->
|
81
86
|
<Dpn>
|
82
87
|
<DpnUid>
|
@@ -11,37 +11,37 @@ describe AIXM::Feature::NavigationalAid::DME do
|
|
11
11
|
|
12
12
|
describe :channel= do
|
13
13
|
it "fails on invalid values" do
|
14
|
-
[nil, :foobar, 123, '0X', '127Y', '12Z'].wont_be_written_to subject, :channel
|
14
|
+
_([nil, :foobar, 123, '0X', '127Y', '12Z']).wont_be_written_to subject, :channel
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
18
|
describe :ghost_f do
|
19
19
|
it "must be derived from the channel" do
|
20
|
-
subject.tap { |s| s.channel = '1X' }.ghost_f.freq.must_equal 134.4
|
21
|
-
subject.tap { |s| s.channel = '12Y' }.ghost_f.freq.must_equal 135.55
|
22
|
-
subject.tap { |s| s.channel = '16Y' }.ghost_f.freq.must_equal 135.95
|
23
|
-
subject.tap { |s| s.channel = '17X' }.ghost_f.freq.must_equal 108
|
24
|
-
subject.tap { |s| s.channel = '30X' }.ghost_f.freq.must_equal 109.3
|
25
|
-
subject.tap { |s| s.channel = '59Y' }.ghost_f.freq.must_equal 112.25
|
26
|
-
subject.tap { |s| s.channel = '60X' }.ghost_f.freq.must_equal 133.3
|
27
|
-
subject.tap { |s| s.channel = '64Y' }.ghost_f.freq.must_equal 133.75
|
28
|
-
subject.tap { |s| s.channel = '69Y' }.ghost_f.freq.must_equal 134.25
|
29
|
-
subject.tap { |s| s.channel = '70X' }.ghost_f.freq.must_equal 112.30
|
30
|
-
subject.tap { |s| s.channel = '100X' }.ghost_f.freq.must_equal 115.3
|
31
|
-
subject.tap { |s| s.channel = '126Y' }.ghost_f.freq.must_equal 117.95
|
20
|
+
_(subject.tap { |s| s.channel = '1X' }.ghost_f.freq).must_equal 134.4
|
21
|
+
_(subject.tap { |s| s.channel = '12Y' }.ghost_f.freq).must_equal 135.55
|
22
|
+
_(subject.tap { |s| s.channel = '16Y' }.ghost_f.freq).must_equal 135.95
|
23
|
+
_(subject.tap { |s| s.channel = '17X' }.ghost_f.freq).must_equal 108
|
24
|
+
_(subject.tap { |s| s.channel = '30X' }.ghost_f.freq).must_equal 109.3
|
25
|
+
_(subject.tap { |s| s.channel = '59Y' }.ghost_f.freq).must_equal 112.25
|
26
|
+
_(subject.tap { |s| s.channel = '60X' }.ghost_f.freq).must_equal 133.3
|
27
|
+
_(subject.tap { |s| s.channel = '64Y' }.ghost_f.freq).must_equal 133.75
|
28
|
+
_(subject.tap { |s| s.channel = '69Y' }.ghost_f.freq).must_equal 134.25
|
29
|
+
_(subject.tap { |s| s.channel = '70X' }.ghost_f.freq).must_equal 112.30
|
30
|
+
_(subject.tap { |s| s.channel = '100X' }.ghost_f.freq).must_equal 115.3
|
31
|
+
_(subject.tap { |s| s.channel = '126Y' }.ghost_f.freq).must_equal 117.95
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
35
|
describe :kind do
|
36
36
|
it "must return class/type combo" do
|
37
|
-
subject.kind.must_equal "DME"
|
37
|
+
_(subject.kind).must_equal "DME"
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
41
|
describe :to_xml do
|
42
42
|
it "builds correct complete OFMX" do
|
43
43
|
AIXM.ofmx!
|
44
|
-
subject.to_xml.must_equal <<~END
|
44
|
+
_(subject.to_xml).must_equal <<~END
|
45
45
|
<!-- NavigationalAid: [DME] MMM / DME NAVAID -->
|
46
46
|
<Dme source="LF|GEN|0.0 FACTORY|0|0">
|
47
47
|
<DmeUid>
|
@@ -70,7 +70,7 @@ describe AIXM::Feature::NavigationalAid::DME do
|
|
70
70
|
it "builds correct minimal OFMX" do
|
71
71
|
AIXM.ofmx!
|
72
72
|
subject.name = subject.z = subject.timetable = subject.remarks = nil
|
73
|
-
subject.to_xml.must_equal <<~END
|
73
|
+
_(subject.to_xml).must_equal <<~END
|
74
74
|
<!-- NavigationalAid: [DME] MMM -->
|
75
75
|
<Dme source="LF|GEN|0.0 FACTORY|0|0">
|
76
76
|
<DmeUid>
|
@@ -88,5 +88,11 @@ describe AIXM::Feature::NavigationalAid::DME do
|
|
88
88
|
</Dme>
|
89
89
|
END
|
90
90
|
end
|
91
|
+
|
92
|
+
it "builds OFMX with mid" do
|
93
|
+
AIXM.ofmx!
|
94
|
+
AIXM.config.mid_region = 'LF'
|
95
|
+
_(subject.to_xml).must_match /<DmeUid mid="b3ecd57d-529d-4941-97b8-af5ffa089051">/
|
96
|
+
end
|
91
97
|
end
|
92
98
|
end
|
@@ -7,29 +7,29 @@ describe AIXM::Feature::NavigationalAid::Marker do
|
|
7
7
|
|
8
8
|
describe :type= do
|
9
9
|
it "fails on invalid values" do
|
10
|
-
[:foobar, 123].wont_be_written_to subject, :type
|
10
|
+
_([:foobar, 123]).wont_be_written_to subject, :type
|
11
11
|
end
|
12
12
|
|
13
13
|
it "accepts nil value" do
|
14
|
-
[nil].must_be_written_to subject, :name
|
14
|
+
_([nil]).must_be_written_to subject, :name
|
15
15
|
end
|
16
16
|
|
17
17
|
it "looks up valid values" do
|
18
|
-
subject.tap { |s| s.type = :middle }.type.must_equal :middle
|
19
|
-
subject.tap { |s| s.type = :O }.type.must_equal :outer
|
18
|
+
_(subject.tap { |s| s.type = :middle }.type).must_equal :middle
|
19
|
+
_(subject.tap { |s| s.type = :O }.type).must_equal :outer
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
describe :kind do
|
24
24
|
it "must return class/type combo" do
|
25
|
-
subject.kind.must_equal "Marker:O"
|
25
|
+
_(subject.kind).must_equal "Marker:O"
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
describe :to_xml do
|
30
30
|
it "builds correct complete OFMX" do
|
31
31
|
AIXM.ofmx!
|
32
|
-
subject.to_xml.must_equal <<~END
|
32
|
+
_(subject.to_xml).must_equal <<~END
|
33
33
|
<!-- NavigationalAid: [Marker:O] --- / MARKER NAVAID -->
|
34
34
|
<Mkr source="LF|GEN|0.0 FACTORY|0|0">
|
35
35
|
<MkrUid>
|
@@ -58,7 +58,7 @@ describe AIXM::Feature::NavigationalAid::Marker do
|
|
58
58
|
it "builds correct minimal OFMX" do
|
59
59
|
AIXM.ofmx!
|
60
60
|
subject.type = subject.name = subject.z = subject.timetable = subject.remarks = nil
|
61
|
-
subject.to_xml.must_equal <<~END
|
61
|
+
_(subject.to_xml).must_equal <<~END
|
62
62
|
<!-- NavigationalAid: [Marker] --- -->
|
63
63
|
<Mkr source="LF|GEN|0.0 FACTORY|0|0">
|
64
64
|
<MkrUid>
|
@@ -75,5 +75,11 @@ describe AIXM::Feature::NavigationalAid::Marker do
|
|
75
75
|
</Mkr>
|
76
76
|
END
|
77
77
|
end
|
78
|
+
|
79
|
+
it "builds OFMX with mid" do
|
80
|
+
AIXM.ofmx!
|
81
|
+
AIXM.config.mid_region = 'LF'
|
82
|
+
_(subject.to_xml).must_match /<MkrUid mid="f3463c39-b380-d31f-b42a-5dfa0b4edb12">/
|
83
|
+
end
|
78
84
|
end
|
79
85
|
end
|
@@ -7,39 +7,39 @@ describe AIXM::Feature::NavigationalAid::NDB do
|
|
7
7
|
|
8
8
|
describe :type= do
|
9
9
|
it "fails on invalid values" do
|
10
|
-
[:foobar, 123].wont_be_written_to subject, :type
|
10
|
+
_([:foobar, 123]).wont_be_written_to subject, :type
|
11
11
|
end
|
12
12
|
|
13
13
|
it "accepts nil value" do
|
14
|
-
[nil].must_be_written_to subject, :type
|
14
|
+
_([nil]).must_be_written_to subject, :type
|
15
15
|
end
|
16
16
|
|
17
17
|
it "looks up valid values" do
|
18
|
-
subject.tap { |s| s.type = :en_route }.type.must_equal :en_route
|
19
|
-
subject.tap { |s| s.type = :L }.type.must_equal :locator
|
18
|
+
_(subject.tap { |s| s.type = :en_route }.type).must_equal :en_route
|
19
|
+
_(subject.tap { |s| s.type = :L }.type).must_equal :locator
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
describe :f= do
|
24
24
|
it "fails on invalid values" do
|
25
|
-
[nil, :foobar, 123].wont_be_written_to subject, :f
|
25
|
+
_([nil, :foobar, 123]).wont_be_written_to subject, :f
|
26
26
|
end
|
27
27
|
|
28
28
|
it "accepts valid values" do
|
29
|
-
[AIXM.f(200, :khz)].must_be_written_to subject, :f
|
29
|
+
_([AIXM.f(200, :khz)]).must_be_written_to subject, :f
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
33
|
describe :kind do
|
34
34
|
it "must return class/type combo" do
|
35
|
-
subject.kind.must_equal "NDB:B"
|
35
|
+
_(subject.kind).must_equal "NDB:B"
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
39
|
describe :to_xml do
|
40
40
|
it "builds correct complete OFMX" do
|
41
41
|
AIXM.ofmx!
|
42
|
-
subject.to_xml.must_equal <<~END
|
42
|
+
_(subject.to_xml).must_equal <<~END
|
43
43
|
<!-- NavigationalAid: [NDB:B] NNN / NDB NAVAID -->
|
44
44
|
<Ndb source="LF|GEN|0.0 FACTORY|0|0">
|
45
45
|
<NdbUid>
|
@@ -68,7 +68,7 @@ describe AIXM::Feature::NavigationalAid::NDB do
|
|
68
68
|
it "builds correct minimal OFMX" do
|
69
69
|
AIXM.ofmx!
|
70
70
|
subject.name = subject.type = subject.z = subject.timetable = subject.remarks = nil
|
71
|
-
subject.to_xml.must_equal <<~END
|
71
|
+
_(subject.to_xml).must_equal <<~END
|
72
72
|
<!-- NavigationalAid: [NDB] NNN -->
|
73
73
|
<Ndb source="LF|GEN|0.0 FACTORY|0|0">
|
74
74
|
<NdbUid>
|
@@ -85,5 +85,11 @@ describe AIXM::Feature::NavigationalAid::NDB do
|
|
85
85
|
</Ndb>
|
86
86
|
END
|
87
87
|
end
|
88
|
+
|
89
|
+
it "builds OFMX with mid" do
|
90
|
+
AIXM.ofmx!
|
91
|
+
AIXM.config.mid_region = 'LF'
|
92
|
+
_(subject.to_xml).must_match /<NdbUid mid="be82074f-4044-8044-5f64-d6080ce3d0e4">/
|
93
|
+
end
|
88
94
|
end
|
89
95
|
end
|
@@ -7,37 +7,37 @@ describe AIXM::Feature::NavigationalAid::TACAN do
|
|
7
7
|
|
8
8
|
describe :channel= do
|
9
9
|
it "fails on invalid values" do
|
10
|
-
[nil, :foobar, 123, '0X', '127Y', '12Z'].wont_be_written_to subject, :channel
|
10
|
+
_([nil, :foobar, 123, '0X', '127Y', '12Z']).wont_be_written_to subject, :channel
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
describe :ghost_f do
|
15
15
|
it "must be derived from the channel" do
|
16
|
-
subject.tap { |s| s.channel = '1X' }.ghost_f.freq.must_equal 134.4
|
17
|
-
subject.tap { |s| s.channel = '12Y' }.ghost_f.freq.must_equal 135.55
|
18
|
-
subject.tap { |s| s.channel = '16Y' }.ghost_f.freq.must_equal 135.95
|
19
|
-
subject.tap { |s| s.channel = '17X' }.ghost_f.freq.must_equal 108
|
20
|
-
subject.tap { |s| s.channel = '30X' }.ghost_f.freq.must_equal 109.3
|
21
|
-
subject.tap { |s| s.channel = '59Y' }.ghost_f.freq.must_equal 112.25
|
22
|
-
subject.tap { |s| s.channel = '60X' }.ghost_f.freq.must_equal 133.3
|
23
|
-
subject.tap { |s| s.channel = '64Y' }.ghost_f.freq.must_equal 133.75
|
24
|
-
subject.tap { |s| s.channel = '69Y' }.ghost_f.freq.must_equal 134.25
|
25
|
-
subject.tap { |s| s.channel = '70X' }.ghost_f.freq.must_equal 112.30
|
26
|
-
subject.tap { |s| s.channel = '100X' }.ghost_f.freq.must_equal 115.3
|
27
|
-
subject.tap { |s| s.channel = '126Y' }.ghost_f.freq.must_equal 117.95
|
16
|
+
_(subject.tap { |s| s.channel = '1X' }.ghost_f.freq).must_equal 134.4
|
17
|
+
_(subject.tap { |s| s.channel = '12Y' }.ghost_f.freq).must_equal 135.55
|
18
|
+
_(subject.tap { |s| s.channel = '16Y' }.ghost_f.freq).must_equal 135.95
|
19
|
+
_(subject.tap { |s| s.channel = '17X' }.ghost_f.freq).must_equal 108
|
20
|
+
_(subject.tap { |s| s.channel = '30X' }.ghost_f.freq).must_equal 109.3
|
21
|
+
_(subject.tap { |s| s.channel = '59Y' }.ghost_f.freq).must_equal 112.25
|
22
|
+
_(subject.tap { |s| s.channel = '60X' }.ghost_f.freq).must_equal 133.3
|
23
|
+
_(subject.tap { |s| s.channel = '64Y' }.ghost_f.freq).must_equal 133.75
|
24
|
+
_(subject.tap { |s| s.channel = '69Y' }.ghost_f.freq).must_equal 134.25
|
25
|
+
_(subject.tap { |s| s.channel = '70X' }.ghost_f.freq).must_equal 112.30
|
26
|
+
_(subject.tap { |s| s.channel = '100X' }.ghost_f.freq).must_equal 115.3
|
27
|
+
_(subject.tap { |s| s.channel = '126Y' }.ghost_f.freq).must_equal 117.95
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
31
|
describe :kind do
|
32
32
|
it "must return class/type combo" do
|
33
|
-
subject.kind.must_equal "TACAN"
|
33
|
+
_(subject.kind).must_equal "TACAN"
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
37
|
describe :to_xml do
|
38
38
|
it "builds correct complete OFMX" do
|
39
39
|
AIXM.ofmx!
|
40
|
-
subject.to_xml.must_equal <<~END
|
40
|
+
_(subject.to_xml).must_equal <<~END
|
41
41
|
<!-- NavigationalAid: [TACAN] TTT / TACAN NAVAID -->
|
42
42
|
<Tcn source="LF|GEN|0.0 FACTORY|0|0">
|
43
43
|
<TcnUid>
|
@@ -66,7 +66,7 @@ describe AIXM::Feature::NavigationalAid::TACAN do
|
|
66
66
|
it "builds correct minimal OFMX" do
|
67
67
|
AIXM.ofmx!
|
68
68
|
subject.name = subject.z = subject.timetable = subject.remarks = nil
|
69
|
-
subject.to_xml.must_equal <<~END
|
69
|
+
_(subject.to_xml).must_equal <<~END
|
70
70
|
<!-- NavigationalAid: [TACAN] TTT -->
|
71
71
|
<Tcn source="LF|GEN|0.0 FACTORY|0|0">
|
72
72
|
<TcnUid>
|
@@ -84,5 +84,11 @@ describe AIXM::Feature::NavigationalAid::TACAN do
|
|
84
84
|
</Tcn>
|
85
85
|
END
|
86
86
|
end
|
87
|
+
|
88
|
+
it "builds OFMX with mid" do
|
89
|
+
AIXM.ofmx!
|
90
|
+
AIXM.config.mid_region = 'LF'
|
91
|
+
_(subject.to_xml).must_match /<TcnUid mid="8776071f-114a-4996-84ef-2d7848c503f5">/
|
92
|
+
end
|
87
93
|
end
|
88
94
|
end
|