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
         
     |