aixm 0.3.8 → 0.3.10
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
- checksums.yaml.gz.sig +1 -0
- data.tar.gz.sig +0 -0
- data/CHANGELOG.md +33 -3
- data/README.md +166 -56
- data/exe/ckmid +14 -0
- data/exe/mkmid +14 -0
- data/lib/aixm.rb +16 -6
- data/lib/aixm/association.rb +369 -0
- data/lib/aixm/classes.rb +43 -0
- data/lib/aixm/component/fato.rb +45 -53
- data/lib/aixm/component/frequency.rb +11 -12
- data/lib/aixm/component/geometry.rb +36 -38
- data/lib/aixm/component/geometry/arc.rb +2 -2
- data/lib/aixm/component/geometry/border.rb +6 -3
- data/lib/aixm/component/geometry/circle.rb +8 -2
- data/lib/aixm/component/geometry/point.rb +8 -2
- data/lib/aixm/component/helipad.rb +30 -38
- data/lib/aixm/component/layer.rb +28 -19
- data/lib/aixm/component/lighting.rb +12 -13
- data/lib/aixm/component/runway.rb +44 -48
- data/lib/aixm/{feature → component}/service.rb +37 -36
- data/lib/aixm/component/surface.rb +3 -3
- data/lib/aixm/component/timetable.rb +2 -2
- data/lib/aixm/component/{vertical_limits.rb → vertical_limit.rb} +12 -6
- data/lib/aixm/config.rb +2 -1
- data/lib/aixm/document.rb +27 -50
- data/lib/aixm/executables.rb +85 -0
- data/lib/aixm/feature.rb +13 -3
- data/lib/aixm/feature/address.rb +12 -13
- data/lib/aixm/feature/airport.rb +103 -128
- data/lib/aixm/feature/airspace.rb +44 -17
- data/lib/aixm/feature/navigational_aid.rb +7 -9
- data/lib/aixm/feature/navigational_aid/designated_point.rb +13 -15
- data/lib/aixm/feature/navigational_aid/dme.rb +11 -12
- data/lib/aixm/feature/navigational_aid/marker.rb +7 -3
- data/lib/aixm/feature/navigational_aid/ndb.rb +7 -3
- data/lib/aixm/feature/navigational_aid/tacan.rb +7 -3
- data/lib/aixm/feature/navigational_aid/vor.rb +23 -15
- data/lib/aixm/feature/obstacle.rb +29 -43
- data/lib/aixm/feature/obstacle_group.rb +37 -34
- data/lib/aixm/feature/organisation.rb +21 -5
- data/lib/aixm/feature/unit.rb +36 -46
- data/lib/aixm/memoize.rb +89 -0
- data/lib/aixm/object.rb +9 -0
- data/lib/aixm/payload_hash.rb +114 -0
- data/lib/aixm/refinements.rb +29 -76
- data/lib/aixm/shortcuts.rb +5 -42
- data/lib/aixm/version.rb +1 -1
- data/lib/aixm/xy.rb +1 -1
- data/schemas/ofmx/0/OFMX-Features.xsd +152 -20
- data/schemas/ofmx/0/OFMX-Snapshot.xsd +0 -5
- metadata +107 -156
- metadata.gz.sig +2 -0
- data/.github/workflows/test.yml +0 -26
- data/.gitignore +0 -6
- data/.ruby-version +0 -1
- data/.yardopts +0 -3
- data/Guardfile +0 -8
- data/aixm.gemspec +0 -35
- data/gems.rb +0 -3
- data/lib/aixm/component.rb +0 -6
- data/rakefile.rb +0 -36
- data/spec/factory.rb +0 -559
- data/spec/lib/aixm/a_spec.rb +0 -203
- data/spec/lib/aixm/component/fato_spec.rb +0 -267
- data/spec/lib/aixm/component/frequency_spec.rb +0 -74
- data/spec/lib/aixm/component/geometry/arc_spec.rb +0 -73
- data/spec/lib/aixm/component/geometry/border_spec.rb +0 -38
- data/spec/lib/aixm/component/geometry/circle_spec.rb +0 -68
- data/spec/lib/aixm/component/geometry/point_spec.rb +0 -37
- data/spec/lib/aixm/component/geometry_spec.rb +0 -316
- data/spec/lib/aixm/component/helipad_spec.rb +0 -193
- data/spec/lib/aixm/component/layer_spec.rb +0 -135
- data/spec/lib/aixm/component/lighting_spec.rb +0 -94
- data/spec/lib/aixm/component/runway_spec.rb +0 -479
- data/spec/lib/aixm/component/surface_spec.rb +0 -124
- data/spec/lib/aixm/component/timetable_spec.rb +0 -47
- data/spec/lib/aixm/component/vertical_limits_spec.rb +0 -94
- data/spec/lib/aixm/config_spec.rb +0 -41
- data/spec/lib/aixm/d_spec.rb +0 -150
- data/spec/lib/aixm/document_spec.rb +0 -1884
- data/spec/lib/aixm/errors_spec.rb +0 -14
- data/spec/lib/aixm/f_spec.rb +0 -85
- data/spec/lib/aixm/feature/address_spec.rb +0 -60
- data/spec/lib/aixm/feature/airport_spec.rb +0 -776
- data/spec/lib/aixm/feature/airspace_spec.rb +0 -394
- data/spec/lib/aixm/feature/navigational_aid/designated_point_spec.rb +0 -103
- data/spec/lib/aixm/feature/navigational_aid/dme_spec.rb +0 -98
- data/spec/lib/aixm/feature/navigational_aid/marker_spec.rb +0 -85
- data/spec/lib/aixm/feature/navigational_aid/ndb_spec.rb +0 -95
- data/spec/lib/aixm/feature/navigational_aid/tacan_spec.rb +0 -94
- data/spec/lib/aixm/feature/navigational_aid/vor_spec.rb +0 -251
- data/spec/lib/aixm/feature/navigational_aid_spec.rb +0 -52
- data/spec/lib/aixm/feature/obstacle_group_spec.rb +0 -330
- data/spec/lib/aixm/feature/obstacle_spec.rb +0 -284
- data/spec/lib/aixm/feature/organisation_spec.rb +0 -83
- data/spec/lib/aixm/feature/service_spec.rb +0 -59
- data/spec/lib/aixm/feature/unit_spec.rb +0 -238
- data/spec/lib/aixm/feature_spec.rb +0 -38
- data/spec/lib/aixm/p_spec.rb +0 -189
- data/spec/lib/aixm/refinements_spec.rb +0 -430
- data/spec/lib/aixm/version_spec.rb +0 -7
- data/spec/lib/aixm/w_spec.rb +0 -150
- data/spec/lib/aixm/xy_spec.rb +0 -180
- data/spec/lib/aixm/z_spec.rb +0 -94
- data/spec/macros/marking.rb +0 -12
- data/spec/macros/organisation.rb +0 -11
- data/spec/macros/remarks.rb +0 -12
- data/spec/macros/timetable.rb +0 -11
- data/spec/macros/xy.rb +0 -11
- data/spec/macros/z_qnh.rb +0 -11
- data/spec/sounds/failure.mp3 +0 -0
- data/spec/sounds/success.mp3 +0 -0
- data/spec/spec_helper.rb +0 -62
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
require_relative '../../../../spec_helper'
|
|
2
|
-
|
|
3
|
-
describe AIXM::Feature::NavigationalAid::DME do
|
|
4
|
-
subject do
|
|
5
|
-
AIXM::Factory.dme
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
describe :organisation= do
|
|
9
|
-
macro :organisation
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
describe :channel= do
|
|
13
|
-
it "fails on invalid values" do
|
|
14
|
-
_([nil, :foobar, 123, '0X', '127Y', '12Z']).wont_be_written_to subject, :channel
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
describe :ghost_f do
|
|
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
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
describe :kind do
|
|
36
|
-
it "must return class/type combo" do
|
|
37
|
-
_(subject.kind).must_equal "DME"
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
describe :to_xml do
|
|
42
|
-
it "builds correct complete OFMX" do
|
|
43
|
-
AIXM.ofmx!
|
|
44
|
-
_(subject.to_xml).must_equal <<~END
|
|
45
|
-
<!-- NavigationalAid: [DME] MMM / DME NAVAID -->
|
|
46
|
-
<Dme source="LF|GEN|0.0 FACTORY|0|0">
|
|
47
|
-
<DmeUid>
|
|
48
|
-
<codeId>MMM</codeId>
|
|
49
|
-
<geoLat>47.85916667N</geoLat>
|
|
50
|
-
<geoLong>007.56000000E</geoLong>
|
|
51
|
-
</DmeUid>
|
|
52
|
-
<OrgUid>
|
|
53
|
-
<txtName>FRANCE</txtName>
|
|
54
|
-
</OrgUid>
|
|
55
|
-
<txtName>DME NAVAID</txtName>
|
|
56
|
-
<codeChannel>95X</codeChannel>
|
|
57
|
-
<valGhostFreq>114.8</valGhostFreq>
|
|
58
|
-
<uomGhostFreq>MHZ</uomGhostFreq>
|
|
59
|
-
<codeDatum>WGE</codeDatum>
|
|
60
|
-
<valElev>500</valElev>
|
|
61
|
-
<uomDistVer>FT</uomDistVer>
|
|
62
|
-
<Dtt>
|
|
63
|
-
<codeWorkHr>H24</codeWorkHr>
|
|
64
|
-
</Dtt>
|
|
65
|
-
<txtRmk>dme navaid</txtRmk>
|
|
66
|
-
</Dme>
|
|
67
|
-
END
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
it "builds correct minimal OFMX" do
|
|
71
|
-
AIXM.ofmx!
|
|
72
|
-
subject.name = subject.z = subject.timetable = subject.remarks = nil
|
|
73
|
-
_(subject.to_xml).must_equal <<~END
|
|
74
|
-
<!-- NavigationalAid: [DME] MMM -->
|
|
75
|
-
<Dme source="LF|GEN|0.0 FACTORY|0|0">
|
|
76
|
-
<DmeUid>
|
|
77
|
-
<codeId>MMM</codeId>
|
|
78
|
-
<geoLat>47.85916667N</geoLat>
|
|
79
|
-
<geoLong>007.56000000E</geoLong>
|
|
80
|
-
</DmeUid>
|
|
81
|
-
<OrgUid>
|
|
82
|
-
<txtName>FRANCE</txtName>
|
|
83
|
-
</OrgUid>
|
|
84
|
-
<codeChannel>95X</codeChannel>
|
|
85
|
-
<valGhostFreq>114.8</valGhostFreq>
|
|
86
|
-
<uomGhostFreq>MHZ</uomGhostFreq>
|
|
87
|
-
<codeDatum>WGE</codeDatum>
|
|
88
|
-
</Dme>
|
|
89
|
-
END
|
|
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
|
|
97
|
-
end
|
|
98
|
-
end
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
require_relative '../../../../spec_helper'
|
|
2
|
-
|
|
3
|
-
describe AIXM::Feature::NavigationalAid::Marker do
|
|
4
|
-
subject do
|
|
5
|
-
AIXM::Factory.marker
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
describe :type= do
|
|
9
|
-
it "fails on invalid values" do
|
|
10
|
-
_([:foobar, 123]).wont_be_written_to subject, :type
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it "accepts nil value" do
|
|
14
|
-
_([nil]).must_be_written_to subject, :name
|
|
15
|
-
end
|
|
16
|
-
|
|
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
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
describe :kind do
|
|
24
|
-
it "must return class/type combo" do
|
|
25
|
-
_(subject.kind).must_equal "Marker:O"
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
describe :to_xml do
|
|
30
|
-
it "builds correct complete OFMX" do
|
|
31
|
-
AIXM.ofmx!
|
|
32
|
-
_(subject.to_xml).must_equal <<~END
|
|
33
|
-
<!-- NavigationalAid: [Marker:O] --- / MARKER NAVAID -->
|
|
34
|
-
<Mkr source="LF|GEN|0.0 FACTORY|0|0">
|
|
35
|
-
<MkrUid>
|
|
36
|
-
<codeId>---</codeId>
|
|
37
|
-
<geoLat>47.85916667N</geoLat>
|
|
38
|
-
<geoLong>007.56000000E</geoLong>
|
|
39
|
-
</MkrUid>
|
|
40
|
-
<OrgUid>
|
|
41
|
-
<txtName>FRANCE</txtName>
|
|
42
|
-
</OrgUid>
|
|
43
|
-
<codePsnIls>O</codePsnIls>
|
|
44
|
-
<valFreq>75</valFreq>
|
|
45
|
-
<uomFreq>MHZ</uomFreq>
|
|
46
|
-
<txtName>MARKER NAVAID</txtName>
|
|
47
|
-
<codeDatum>WGE</codeDatum>
|
|
48
|
-
<valElev>500</valElev>
|
|
49
|
-
<uomDistVer>FT</uomDistVer>
|
|
50
|
-
<Mtt>
|
|
51
|
-
<codeWorkHr>H24</codeWorkHr>
|
|
52
|
-
</Mtt>
|
|
53
|
-
<txtRmk>marker navaid</txtRmk>
|
|
54
|
-
</Mkr>
|
|
55
|
-
END
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
it "builds correct minimal OFMX" do
|
|
59
|
-
AIXM.ofmx!
|
|
60
|
-
subject.type = subject.name = subject.z = subject.timetable = subject.remarks = nil
|
|
61
|
-
_(subject.to_xml).must_equal <<~END
|
|
62
|
-
<!-- NavigationalAid: [Marker] --- -->
|
|
63
|
-
<Mkr source="LF|GEN|0.0 FACTORY|0|0">
|
|
64
|
-
<MkrUid>
|
|
65
|
-
<codeId>---</codeId>
|
|
66
|
-
<geoLat>47.85916667N</geoLat>
|
|
67
|
-
<geoLong>007.56000000E</geoLong>
|
|
68
|
-
</MkrUid>
|
|
69
|
-
<OrgUid>
|
|
70
|
-
<txtName>FRANCE</txtName>
|
|
71
|
-
</OrgUid>
|
|
72
|
-
<valFreq>75</valFreq>
|
|
73
|
-
<uomFreq>MHZ</uomFreq>
|
|
74
|
-
<codeDatum>WGE</codeDatum>
|
|
75
|
-
</Mkr>
|
|
76
|
-
END
|
|
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
|
|
84
|
-
end
|
|
85
|
-
end
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
require_relative '../../../../spec_helper'
|
|
2
|
-
|
|
3
|
-
describe AIXM::Feature::NavigationalAid::NDB do
|
|
4
|
-
subject do
|
|
5
|
-
AIXM::Factory.ndb
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
describe :type= do
|
|
9
|
-
it "fails on invalid values" do
|
|
10
|
-
_([:foobar, 123]).wont_be_written_to subject, :type
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it "accepts nil value" do
|
|
14
|
-
_([nil]).must_be_written_to subject, :type
|
|
15
|
-
end
|
|
16
|
-
|
|
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
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
describe :f= do
|
|
24
|
-
it "fails on invalid values" do
|
|
25
|
-
_([nil, :foobar, 123]).wont_be_written_to subject, :f
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
it "accepts valid values" do
|
|
29
|
-
_([AIXM.f(200, :khz)]).must_be_written_to subject, :f
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
describe :kind do
|
|
34
|
-
it "must return class/type combo" do
|
|
35
|
-
_(subject.kind).must_equal "NDB:B"
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
describe :to_xml do
|
|
40
|
-
it "builds correct complete OFMX" do
|
|
41
|
-
AIXM.ofmx!
|
|
42
|
-
_(subject.to_xml).must_equal <<~END
|
|
43
|
-
<!-- NavigationalAid: [NDB:B] NNN / NDB NAVAID -->
|
|
44
|
-
<Ndb source="LF|GEN|0.0 FACTORY|0|0">
|
|
45
|
-
<NdbUid>
|
|
46
|
-
<codeId>NNN</codeId>
|
|
47
|
-
<geoLat>47.85916667N</geoLat>
|
|
48
|
-
<geoLong>007.56000000E</geoLong>
|
|
49
|
-
</NdbUid>
|
|
50
|
-
<OrgUid>
|
|
51
|
-
<txtName>FRANCE</txtName>
|
|
52
|
-
</OrgUid>
|
|
53
|
-
<txtName>NDB NAVAID</txtName>
|
|
54
|
-
<valFreq>555</valFreq>
|
|
55
|
-
<uomFreq>KHZ</uomFreq>
|
|
56
|
-
<codeClass>B</codeClass>
|
|
57
|
-
<codeDatum>WGE</codeDatum>
|
|
58
|
-
<valElev>500</valElev>
|
|
59
|
-
<uomDistVer>FT</uomDistVer>
|
|
60
|
-
<Ntt>
|
|
61
|
-
<codeWorkHr>H24</codeWorkHr>
|
|
62
|
-
</Ntt>
|
|
63
|
-
<txtRmk>ndb navaid</txtRmk>
|
|
64
|
-
</Ndb>
|
|
65
|
-
END
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
it "builds correct minimal OFMX" do
|
|
69
|
-
AIXM.ofmx!
|
|
70
|
-
subject.name = subject.type = subject.z = subject.timetable = subject.remarks = nil
|
|
71
|
-
_(subject.to_xml).must_equal <<~END
|
|
72
|
-
<!-- NavigationalAid: [NDB] NNN -->
|
|
73
|
-
<Ndb source="LF|GEN|0.0 FACTORY|0|0">
|
|
74
|
-
<NdbUid>
|
|
75
|
-
<codeId>NNN</codeId>
|
|
76
|
-
<geoLat>47.85916667N</geoLat>
|
|
77
|
-
<geoLong>007.56000000E</geoLong>
|
|
78
|
-
</NdbUid>
|
|
79
|
-
<OrgUid>
|
|
80
|
-
<txtName>FRANCE</txtName>
|
|
81
|
-
</OrgUid>
|
|
82
|
-
<valFreq>555</valFreq>
|
|
83
|
-
<uomFreq>KHZ</uomFreq>
|
|
84
|
-
<codeDatum>WGE</codeDatum>
|
|
85
|
-
</Ndb>
|
|
86
|
-
END
|
|
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
|
|
94
|
-
end
|
|
95
|
-
end
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
require_relative '../../../../spec_helper'
|
|
2
|
-
|
|
3
|
-
describe AIXM::Feature::NavigationalAid::TACAN do
|
|
4
|
-
subject do
|
|
5
|
-
AIXM::Factory.tacan
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
describe :channel= do
|
|
9
|
-
it "fails on invalid values" do
|
|
10
|
-
_([nil, :foobar, 123, '0X', '127Y', '12Z']).wont_be_written_to subject, :channel
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
describe :ghost_f do
|
|
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
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
describe :kind do
|
|
32
|
-
it "must return class/type combo" do
|
|
33
|
-
_(subject.kind).must_equal "TACAN"
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
describe :to_xml do
|
|
38
|
-
it "builds correct complete OFMX" do
|
|
39
|
-
AIXM.ofmx!
|
|
40
|
-
_(subject.to_xml).must_equal <<~END
|
|
41
|
-
<!-- NavigationalAid: [TACAN] TTT / TACAN NAVAID -->
|
|
42
|
-
<Tcn source="LF|GEN|0.0 FACTORY|0|0">
|
|
43
|
-
<TcnUid>
|
|
44
|
-
<codeId>TTT</codeId>
|
|
45
|
-
<geoLat>47.85916667N</geoLat>
|
|
46
|
-
<geoLong>007.56000000E</geoLong>
|
|
47
|
-
</TcnUid>
|
|
48
|
-
<OrgUid>
|
|
49
|
-
<txtName>FRANCE</txtName>
|
|
50
|
-
</OrgUid>
|
|
51
|
-
<txtName>TACAN NAVAID</txtName>
|
|
52
|
-
<codeChannel>29X</codeChannel>
|
|
53
|
-
<valGhostFreq>109.2</valGhostFreq>
|
|
54
|
-
<uomGhostFreq>MHZ</uomGhostFreq>
|
|
55
|
-
<codeDatum>WGE</codeDatum>
|
|
56
|
-
<valElev>500</valElev>
|
|
57
|
-
<uomDistVer>FT</uomDistVer>
|
|
58
|
-
<Ttt>
|
|
59
|
-
<codeWorkHr>H24</codeWorkHr>
|
|
60
|
-
</Ttt>
|
|
61
|
-
<txtRmk>tacan navaid</txtRmk>
|
|
62
|
-
</Tcn>
|
|
63
|
-
END
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
it "builds correct minimal OFMX" do
|
|
67
|
-
AIXM.ofmx!
|
|
68
|
-
subject.name = subject.z = subject.timetable = subject.remarks = nil
|
|
69
|
-
_(subject.to_xml).must_equal <<~END
|
|
70
|
-
<!-- NavigationalAid: [TACAN] TTT -->
|
|
71
|
-
<Tcn source="LF|GEN|0.0 FACTORY|0|0">
|
|
72
|
-
<TcnUid>
|
|
73
|
-
<codeId>TTT</codeId>
|
|
74
|
-
<geoLat>47.85916667N</geoLat>
|
|
75
|
-
<geoLong>007.56000000E</geoLong>
|
|
76
|
-
</TcnUid>
|
|
77
|
-
<OrgUid>
|
|
78
|
-
<txtName>FRANCE</txtName>
|
|
79
|
-
</OrgUid>
|
|
80
|
-
<codeChannel>29X</codeChannel>
|
|
81
|
-
<valGhostFreq>109.2</valGhostFreq>
|
|
82
|
-
<uomGhostFreq>MHZ</uomGhostFreq>
|
|
83
|
-
<codeDatum>WGE</codeDatum>
|
|
84
|
-
</Tcn>
|
|
85
|
-
END
|
|
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
|
|
93
|
-
end
|
|
94
|
-
end
|
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
require_relative '../../../../spec_helper'
|
|
2
|
-
|
|
3
|
-
describe AIXM::Feature::NavigationalAid::VOR do
|
|
4
|
-
context "VOR" do
|
|
5
|
-
subject do
|
|
6
|
-
AIXM::Factory.vor
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
describe :type= do
|
|
10
|
-
it "fails on invalid values" do
|
|
11
|
-
_([nil, :foobar, 123]).wont_be_written_to subject, :type
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it "looks up valid values" do
|
|
15
|
-
_(subject.tap { |s| s.type = :conventional }.type).must_equal :conventional
|
|
16
|
-
_(subject.tap { |s| s.type = :DVOR }.type).must_equal :doppler
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
describe :f= do
|
|
21
|
-
it "fails on invalid values" do
|
|
22
|
-
_([nil, :foobar, 123]).wont_be_written_to subject, :f
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it "accepts valid values" do
|
|
26
|
-
_([AIXM.f(110, :mhz)]).must_be_written_to subject, :f
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
describe :north= do
|
|
31
|
-
it "fails on invalid values" do
|
|
32
|
-
_([nil, :foobar, 123]).wont_be_written_to subject, :north
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it "looks up valid values" do
|
|
36
|
-
_(subject.tap { |s| s.north = :magnetic }.north).must_equal :magnetic
|
|
37
|
-
_(subject.tap { |s| s.north = :TRUE }.north).must_equal :geographic
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
describe :kind do
|
|
42
|
-
it "must return class/type combo" do
|
|
43
|
-
_(subject.kind).must_equal "VOR:VOR"
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
describe :to_xml do
|
|
48
|
-
it "builds correct complete OFMX" do
|
|
49
|
-
AIXM.ofmx!
|
|
50
|
-
_(subject.to_xml).must_equal <<~END
|
|
51
|
-
<!-- NavigationalAid: [VOR:VOR] VVV / VOR NAVAID -->
|
|
52
|
-
<Vor source="LF|GEN|0.0 FACTORY|0|0">
|
|
53
|
-
<VorUid>
|
|
54
|
-
<codeId>VVV</codeId>
|
|
55
|
-
<geoLat>47.85916667N</geoLat>
|
|
56
|
-
<geoLong>007.56000000E</geoLong>
|
|
57
|
-
</VorUid>
|
|
58
|
-
<OrgUid>
|
|
59
|
-
<txtName>FRANCE</txtName>
|
|
60
|
-
</OrgUid>
|
|
61
|
-
<txtName>VOR NAVAID</txtName>
|
|
62
|
-
<codeType>VOR</codeType>
|
|
63
|
-
<valFreq>111</valFreq>
|
|
64
|
-
<uomFreq>MHZ</uomFreq>
|
|
65
|
-
<codeTypeNorth>TRUE</codeTypeNorth>
|
|
66
|
-
<codeDatum>WGE</codeDatum>
|
|
67
|
-
<valElev>500</valElev>
|
|
68
|
-
<uomDistVer>FT</uomDistVer>
|
|
69
|
-
<Vtt>
|
|
70
|
-
<codeWorkHr>H24</codeWorkHr>
|
|
71
|
-
</Vtt>
|
|
72
|
-
<txtRmk>vor navaid</txtRmk>
|
|
73
|
-
</Vor>
|
|
74
|
-
END
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
it "builds correct minimal OFMX" do
|
|
78
|
-
AIXM.ofmx!
|
|
79
|
-
subject.name = subject.z = subject.timetable = subject.remarks = nil
|
|
80
|
-
_(subject.to_xml).must_equal <<~END
|
|
81
|
-
<!-- NavigationalAid: [VOR:VOR] VVV -->
|
|
82
|
-
<Vor source="LF|GEN|0.0 FACTORY|0|0">
|
|
83
|
-
<VorUid>
|
|
84
|
-
<codeId>VVV</codeId>
|
|
85
|
-
<geoLat>47.85916667N</geoLat>
|
|
86
|
-
<geoLong>007.56000000E</geoLong>
|
|
87
|
-
</VorUid>
|
|
88
|
-
<OrgUid>
|
|
89
|
-
<txtName>FRANCE</txtName>
|
|
90
|
-
</OrgUid>
|
|
91
|
-
<codeType>VOR</codeType>
|
|
92
|
-
<valFreq>111</valFreq>
|
|
93
|
-
<uomFreq>MHZ</uomFreq>
|
|
94
|
-
<codeTypeNorth>TRUE</codeTypeNorth>
|
|
95
|
-
<codeDatum>WGE</codeDatum>
|
|
96
|
-
</Vor>
|
|
97
|
-
END
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
it "builds OFMX with mid" do
|
|
101
|
-
AIXM.ofmx!
|
|
102
|
-
AIXM.config.mid_region = 'LF'
|
|
103
|
-
_(subject.to_xml).must_match /<VorUid mid="627bea52-cca8-f407-88be-90a85a333741">/
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
context "VOR/DME" do
|
|
109
|
-
subject do
|
|
110
|
-
AIXM::Factory.vor.tap do |vor|
|
|
111
|
-
vor.name = "VOR/DME NAVAID"
|
|
112
|
-
vor.remarks = "vor/dme navaid"
|
|
113
|
-
vor.associate_dme(channel: '84X')
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
describe :kind do
|
|
118
|
-
it "must return class/type combo" do
|
|
119
|
-
_(subject.kind).must_equal "VOR:VOR"
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
describe :to_xml do
|
|
124
|
-
it "builds correct OFMX" do
|
|
125
|
-
AIXM.ofmx!
|
|
126
|
-
_(subject.to_xml).must_equal <<~END
|
|
127
|
-
<!-- NavigationalAid: [VOR:VOR] VVV / VOR/DME NAVAID -->
|
|
128
|
-
<Vor source="LF|GEN|0.0 FACTORY|0|0">
|
|
129
|
-
<VorUid>
|
|
130
|
-
<codeId>VVV</codeId>
|
|
131
|
-
<geoLat>47.85916667N</geoLat>
|
|
132
|
-
<geoLong>007.56000000E</geoLong>
|
|
133
|
-
</VorUid>
|
|
134
|
-
<OrgUid>
|
|
135
|
-
<txtName>FRANCE</txtName>
|
|
136
|
-
</OrgUid>
|
|
137
|
-
<txtName>VOR/DME NAVAID</txtName>
|
|
138
|
-
<codeType>VOR</codeType>
|
|
139
|
-
<valFreq>111</valFreq>
|
|
140
|
-
<uomFreq>MHZ</uomFreq>
|
|
141
|
-
<codeTypeNorth>TRUE</codeTypeNorth>
|
|
142
|
-
<codeDatum>WGE</codeDatum>
|
|
143
|
-
<valElev>500</valElev>
|
|
144
|
-
<uomDistVer>FT</uomDistVer>
|
|
145
|
-
<Vtt>
|
|
146
|
-
<codeWorkHr>H24</codeWorkHr>
|
|
147
|
-
</Vtt>
|
|
148
|
-
<txtRmk>vor/dme navaid</txtRmk>
|
|
149
|
-
</Vor>
|
|
150
|
-
<!-- NavigationalAid: [DME] VVV / VOR/DME NAVAID -->
|
|
151
|
-
<Dme>
|
|
152
|
-
<DmeUid>
|
|
153
|
-
<codeId>VVV</codeId>
|
|
154
|
-
<geoLat>47.85916667N</geoLat>
|
|
155
|
-
<geoLong>007.56000000E</geoLong>
|
|
156
|
-
</DmeUid>
|
|
157
|
-
<OrgUid>
|
|
158
|
-
<txtName>FRANCE</txtName>
|
|
159
|
-
</OrgUid>
|
|
160
|
-
<VorUid>
|
|
161
|
-
<codeId>VVV</codeId>
|
|
162
|
-
<geoLat>47.85916667N</geoLat>
|
|
163
|
-
<geoLong>007.56000000E</geoLong>
|
|
164
|
-
</VorUid>
|
|
165
|
-
<txtName>VOR/DME NAVAID</txtName>
|
|
166
|
-
<codeChannel>84X</codeChannel>
|
|
167
|
-
<codeDatum>WGE</codeDatum>
|
|
168
|
-
<valElev>500</valElev>
|
|
169
|
-
<uomDistVer>FT</uomDistVer>
|
|
170
|
-
<Dtt>
|
|
171
|
-
<codeWorkHr>H24</codeWorkHr>
|
|
172
|
-
</Dtt>
|
|
173
|
-
<txtRmk>vor/dme navaid</txtRmk>
|
|
174
|
-
</Dme>
|
|
175
|
-
END
|
|
176
|
-
end
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
context "complete VORTAC" do
|
|
181
|
-
subject do
|
|
182
|
-
AIXM::Factory.vor.tap do |vor|
|
|
183
|
-
vor.name = "VORTAC NAVAID"
|
|
184
|
-
vor.remarks = "vortac navaid"
|
|
185
|
-
vor.associate_tacan(channel: '54X')
|
|
186
|
-
end
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
describe :kind do
|
|
190
|
-
it "must return class/type combo" do
|
|
191
|
-
_(subject.kind).must_equal "VOR:VOR"
|
|
192
|
-
end
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
describe :to_xml do
|
|
196
|
-
it "builds correct OFMX" do
|
|
197
|
-
AIXM.ofmx!
|
|
198
|
-
_(subject.to_xml).must_equal <<~END
|
|
199
|
-
<!-- NavigationalAid: [VOR:VOR] VVV / VORTAC NAVAID -->
|
|
200
|
-
<Vor source="LF|GEN|0.0 FACTORY|0|0">
|
|
201
|
-
<VorUid>
|
|
202
|
-
<codeId>VVV</codeId>
|
|
203
|
-
<geoLat>47.85916667N</geoLat>
|
|
204
|
-
<geoLong>007.56000000E</geoLong>
|
|
205
|
-
</VorUid>
|
|
206
|
-
<OrgUid>
|
|
207
|
-
<txtName>FRANCE</txtName>
|
|
208
|
-
</OrgUid>
|
|
209
|
-
<txtName>VORTAC NAVAID</txtName>
|
|
210
|
-
<codeType>VOR</codeType>
|
|
211
|
-
<valFreq>111</valFreq>
|
|
212
|
-
<uomFreq>MHZ</uomFreq>
|
|
213
|
-
<codeTypeNorth>TRUE</codeTypeNorth>
|
|
214
|
-
<codeDatum>WGE</codeDatum>
|
|
215
|
-
<valElev>500</valElev>
|
|
216
|
-
<uomDistVer>FT</uomDistVer>
|
|
217
|
-
<Vtt>
|
|
218
|
-
<codeWorkHr>H24</codeWorkHr>
|
|
219
|
-
</Vtt>
|
|
220
|
-
<txtRmk>vortac navaid</txtRmk>
|
|
221
|
-
</Vor>
|
|
222
|
-
<!-- NavigationalAid: [TACAN] VVV / VORTAC NAVAID -->
|
|
223
|
-
<Tcn>
|
|
224
|
-
<TcnUid>
|
|
225
|
-
<codeId>VVV</codeId>
|
|
226
|
-
<geoLat>47.85916667N</geoLat>
|
|
227
|
-
<geoLong>007.56000000E</geoLong>
|
|
228
|
-
</TcnUid>
|
|
229
|
-
<OrgUid>
|
|
230
|
-
<txtName>FRANCE</txtName>
|
|
231
|
-
</OrgUid>
|
|
232
|
-
<VorUid>
|
|
233
|
-
<codeId>VVV</codeId>
|
|
234
|
-
<geoLat>47.85916667N</geoLat>
|
|
235
|
-
<geoLong>007.56000000E</geoLong>
|
|
236
|
-
</VorUid>
|
|
237
|
-
<txtName>VORTAC NAVAID</txtName>
|
|
238
|
-
<codeChannel>54X</codeChannel>
|
|
239
|
-
<codeDatum>WGE</codeDatum>
|
|
240
|
-
<valElev>500</valElev>
|
|
241
|
-
<uomDistVer>FT</uomDistVer>
|
|
242
|
-
<Ttt>
|
|
243
|
-
<codeWorkHr>H24</codeWorkHr>
|
|
244
|
-
</Ttt>
|
|
245
|
-
<txtRmk>vortac navaid</txtRmk>
|
|
246
|
-
</Tcn>
|
|
247
|
-
END
|
|
248
|
-
end
|
|
249
|
-
end
|
|
250
|
-
end
|
|
251
|
-
end
|