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
@@ -7,75 +7,75 @@ describe AIXM::Document do
|
|
7
7
|
|
8
8
|
describe :initialize do
|
9
9
|
it "sets defaults" do
|
10
|
-
subject.features.must_equal []
|
10
|
+
_(subject.features).must_equal []
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
describe :namespace= do
|
15
15
|
it "fails on invalid values" do
|
16
|
-
['foobar', :foobar].wont_be_written_to subject, :namespace
|
16
|
+
_(['foobar', :foobar]).wont_be_written_to subject, :namespace
|
17
17
|
end
|
18
18
|
|
19
19
|
it "sets random UUID for nil value" do
|
20
|
-
subject.tap { |s| s.namespace = nil }.namespace.must_match AIXM::Document::NAMESPACE_RE
|
20
|
+
_(subject.tap { |s| s.namespace = nil }.namespace).must_match AIXM::Document::NAMESPACE_RE
|
21
21
|
end
|
22
22
|
|
23
23
|
it "accepts UUID value" do
|
24
|
-
[SecureRandom.uuid].must_be_written_to subject, :namespace
|
24
|
+
_([SecureRandom.uuid]).must_be_written_to subject, :namespace
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
describe :region= do
|
29
29
|
it "fails on invalid values" do
|
30
|
-
['x', 'foobar', :foobar].wont_be_written_to subject, :region
|
30
|
+
_(['x', 'foobar', :foobar]).wont_be_written_to subject, :region
|
31
31
|
end
|
32
32
|
|
33
33
|
it "upcases valid values" do
|
34
|
-
subject.tap { |s| s.region = 'lf' }.region.must_equal 'LF'
|
34
|
+
_(subject.tap { |s| s.region = 'lf' }.region).must_equal 'LF'
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
describe :created_at= do
|
39
39
|
it "fails on invalid values" do
|
40
|
-
['foobar', '2018-01-77'].wont_be_written_to subject, :created_at
|
40
|
+
_(['foobar', '2018-01-77']).wont_be_written_to subject, :created_at
|
41
41
|
end
|
42
42
|
|
43
43
|
it "parses dates and times" do
|
44
44
|
string = '2018-01-01 12:00:00 +0100'
|
45
|
-
subject.tap { |s| s.created_at = string }.created_at.must_equal Time.parse(string)
|
45
|
+
_(subject.tap { |s| s.created_at = string }.created_at).must_equal Time.parse(string)
|
46
46
|
end
|
47
47
|
|
48
48
|
it "falls back to effective_at first" do
|
49
49
|
subject.effective_at = Time.now
|
50
50
|
subject.created_at = nil
|
51
|
-
subject.created_at.must_equal subject.effective_at
|
51
|
+
_(subject.created_at).must_equal subject.effective_at
|
52
52
|
end
|
53
53
|
|
54
54
|
it "falls back to now second" do
|
55
55
|
subject.created_at = nil
|
56
|
-
subject.created_at.must_be_close_to Time.now
|
56
|
+
_(subject.created_at).must_be_close_to Time.now
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
60
|
describe :effective_at= do
|
61
61
|
it "fails on invalid values" do
|
62
|
-
['foobar', '2018-01-77'].wont_be_written_to subject, :effective_at
|
62
|
+
_(['foobar', '2018-01-77']).wont_be_written_to subject, :effective_at
|
63
63
|
end
|
64
64
|
|
65
65
|
it "parses dates and times" do
|
66
66
|
string = '2018-01-01 12:00:00 +0100'
|
67
|
-
subject.tap { |s| s.effective_at = string }.effective_at.must_equal Time.parse(string)
|
67
|
+
_(subject.tap { |s| s.effective_at = string }.effective_at).must_equal Time.parse(string)
|
68
68
|
end
|
69
69
|
|
70
70
|
it "falls back to created_at first" do
|
71
71
|
subject.effective_at = Time.now
|
72
72
|
subject.effective_at = nil
|
73
|
-
subject.effective_at.must_equal subject.created_at
|
73
|
+
_(subject.effective_at).must_equal subject.created_at
|
74
74
|
end
|
75
75
|
|
76
76
|
it "falls back to now second" do
|
77
77
|
subject.effective_at = nil
|
78
|
-
subject.effective_at.must_be_close_to Time.now
|
78
|
+
_(subject.effective_at).must_be_close_to Time.now
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
@@ -85,21 +85,21 @@ describe AIXM::Document do
|
|
85
85
|
end
|
86
86
|
|
87
87
|
it "returns array of features by class" do
|
88
|
-
subject.select_features(:airport).map(&:id).must_equal %w(LFNT)
|
89
|
-
subject.select_features(AIXM::Feature::Airport).map(&:id).must_equal %w(LFNT)
|
88
|
+
_(subject.select_features(:airport).map(&:id)).must_equal %w(LFNT)
|
89
|
+
_(subject.select_features(AIXM::Feature::Airport).map(&:id)).must_equal %w(LFNT)
|
90
90
|
end
|
91
91
|
|
92
92
|
it "returns array of features by class and attributes" do
|
93
|
-
subject.select_features(:airport, id: "LFNT").map(&:id).must_equal %w(LFNT)
|
94
|
-
subject.select_features(AIXM::Feature::Airport, id: "LFNT").map(&:id).must_equal %w(LFNT)
|
93
|
+
_(subject.select_features(:airport, id: "LFNT").map(&:id)).must_equal %w(LFNT)
|
94
|
+
_(subject.select_features(AIXM::Feature::Airport, id: "LFNT").map(&:id)).must_equal %w(LFNT)
|
95
95
|
end
|
96
96
|
|
97
97
|
it "returns empty array if nothing matches" do
|
98
|
-
subject.select_features(:airport, id: "FAKE").must_equal []
|
98
|
+
_(subject.select_features(:airport, id: "FAKE")).must_equal []
|
99
99
|
end
|
100
100
|
|
101
101
|
it "fails on invalid shortcut" do
|
102
|
-
|
102
|
+
_{ subject.select_features(:fake) }.must_raise ArgumentError
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
@@ -130,44 +130,43 @@ describe AIXM::Document do
|
|
130
130
|
end
|
131
131
|
|
132
132
|
it "adds 1 group of obstacles with default max distance" do
|
133
|
-
subject.group_obstacles
|
133
|
+
_(subject.group_obstacles!).must_equal 1
|
134
134
|
obstacle_group = subject.select_features(:obstacle_group).first
|
135
|
-
obstacle_group.obstacles.count.must_equal 8
|
135
|
+
_(obstacle_group.obstacles.count).must_equal 8
|
136
136
|
end
|
137
137
|
|
138
138
|
it "adds 2 groups of obstacles with max distance 400m" do
|
139
|
-
subject.group_obstacles!(max_distance: AIXM.d(400, :m)).must_equal 2
|
139
|
+
_(subject.group_obstacles!(max_distance: AIXM.d(400, :m))).must_equal 2
|
140
140
|
obstacle_groups = subject.features.select { |f| f.is_a? AIXM::Feature::ObstacleGroup }
|
141
141
|
obstacle_groups.each do |obstacle_group|
|
142
142
|
names = obstacle_group.obstacles.map(&:name).sort
|
143
|
-
names.must_equal names.include?('1') ? %w(1 2 3 4) : %w(5 6 7 8)
|
143
|
+
_(names).must_equal names.include?('1') ? %w(1 2 3 4) : %w(5 6 7 8)
|
144
144
|
end
|
145
145
|
end
|
146
146
|
|
147
147
|
it "leaves ungrouped obstacles untouched" do
|
148
148
|
subject.group_obstacles!
|
149
|
-
subject.select_features(:obstacle).count.must_equal 1
|
149
|
+
_(subject.select_features(:obstacle).count).must_equal 1
|
150
150
|
end
|
151
151
|
|
152
152
|
it "copies source of first obstacle to obstacle group" do
|
153
153
|
subject.group_obstacles!
|
154
154
|
obstacle_group = subject.select_features(:obstacle_group).first
|
155
|
-
obstacle_group.source.must_equal obstacle_group.obstacles.first.source
|
155
|
+
_(obstacle_group.source).must_equal obstacle_group.obstacles.first.source
|
156
156
|
end
|
157
157
|
end
|
158
158
|
|
159
159
|
context "AIXM" do
|
160
160
|
subject do
|
161
|
-
AIXM.aixm!
|
162
161
|
AIXM::Factory.document
|
163
162
|
end
|
164
163
|
|
165
164
|
it "won't have errors" do
|
166
|
-
subject.errors.must_equal []
|
165
|
+
_(subject.errors).must_equal []
|
167
166
|
end
|
168
167
|
|
169
168
|
it "builds correct AIXM" do
|
170
|
-
subject.to_xml.must_equal <<~"END"
|
169
|
+
_(subject.to_xml).must_equal <<~"END"
|
171
170
|
<?xml version="1.0" encoding="UTF-8"?>
|
172
171
|
<AIXM-Snapshot xmlns:xsi="http://www.aixm.aero/schema/4.5/AIXM-Snapshot.xsd" version="4.5" origin="rubygem aixm-#{AIXM::VERSION}" created="2018-01-01T12:00:00+01:00" effective="2018-01-01T12:00:00+01:00">
|
173
172
|
<!-- Organisation: FRANCE -->
|
@@ -297,7 +296,7 @@ describe AIXM::Document do
|
|
297
296
|
<geoLat>440007.63N</geoLat>
|
298
297
|
<geoLong>0044507.81E</geoLong>
|
299
298
|
<valTrueBrg>165</valTrueBrg>
|
300
|
-
<valMagBrg>
|
299
|
+
<valMagBrg>164</valMagBrg>
|
301
300
|
<valElevTdz>145</valElevTdz>
|
302
301
|
<uomElevTdz>FT</uomElevTdz>
|
303
302
|
<codeVfrPattern>E</codeVfrPattern>
|
@@ -352,7 +351,7 @@ describe AIXM::Document do
|
|
352
351
|
<geoLat>435925.31N</geoLat>
|
353
352
|
<geoLong>0044523.24E</geoLong>
|
354
353
|
<valTrueBrg>345</valTrueBrg>
|
355
|
-
<valMagBrg>
|
354
|
+
<valMagBrg>344</valMagBrg>
|
356
355
|
<valElevTdz>147</valElevTdz>
|
357
356
|
<uomElevTdz>FT</uomElevTdz>
|
358
357
|
<codeVfrPattern>L</codeVfrPattern>
|
@@ -435,7 +434,7 @@ describe AIXM::Document do
|
|
435
434
|
<txtDesig>35</txtDesig>
|
436
435
|
</FdnUid>
|
437
436
|
<valTrueBrg>355</valTrueBrg>
|
438
|
-
<valMagBrg>
|
437
|
+
<valMagBrg>354</valMagBrg>
|
439
438
|
<txtRmk>Avoid flight over residental area</txtRmk>
|
440
439
|
</Fdn>
|
441
440
|
<Fls>
|
@@ -978,11 +977,11 @@ describe AIXM::Document do
|
|
978
977
|
end
|
979
978
|
|
980
979
|
it "won't have errors" do
|
981
|
-
subject.errors.must_equal []
|
980
|
+
_(subject.errors).must_equal []
|
982
981
|
end
|
983
982
|
|
984
983
|
it "builds correct OFMX" do
|
985
|
-
subject.to_xml.must_equal <<~"END"
|
984
|
+
_(subject.to_xml).must_equal <<~"END"
|
986
985
|
<?xml version="1.0" encoding="UTF-8"?>
|
987
986
|
<OFMX-Snapshot xmlns:xsi="http://schema.openflightmaps.org/0/OFMX-Snapshot.xsd" version="0" origin="rubygem aixm-#{AIXM::VERSION}" region="LF" namespace="00000000-0000-0000-0000-000000000000" created="2018-01-01T12:00:00+01:00" effective="2018-01-01T12:00:00+01:00">
|
988
987
|
<!-- Organisation: FRANCE -->
|
@@ -1113,7 +1112,7 @@ describe AIXM::Document do
|
|
1113
1112
|
<geoLat>44.00211944N</geoLat>
|
1114
1113
|
<geoLong>004.75216944E</geoLong>
|
1115
1114
|
<valTrueBrg>165</valTrueBrg>
|
1116
|
-
<valMagBrg>
|
1115
|
+
<valMagBrg>164</valMagBrg>
|
1117
1116
|
<valElevTdz>145</valElevTdz>
|
1118
1117
|
<uomElevTdz>FT</uomElevTdz>
|
1119
1118
|
<codeVfrPattern>E</codeVfrPattern>
|
@@ -1168,7 +1167,7 @@ describe AIXM::Document do
|
|
1168
1167
|
<geoLat>43.99036389N</geoLat>
|
1169
1168
|
<geoLong>004.75645556E</geoLong>
|
1170
1169
|
<valTrueBrg>345</valTrueBrg>
|
1171
|
-
<valMagBrg>
|
1170
|
+
<valMagBrg>344</valMagBrg>
|
1172
1171
|
<valElevTdz>147</valElevTdz>
|
1173
1172
|
<uomElevTdz>FT</uomElevTdz>
|
1174
1173
|
<codeVfrPattern>L</codeVfrPattern>
|
@@ -1251,7 +1250,7 @@ describe AIXM::Document do
|
|
1251
1250
|
<txtDesig>35</txtDesig>
|
1252
1251
|
</FdnUid>
|
1253
1252
|
<valTrueBrg>355</valTrueBrg>
|
1254
|
-
<valMagBrg>
|
1253
|
+
<valMagBrg>354</valMagBrg>
|
1255
1254
|
<txtRmk>Avoid flight over residental area</txtRmk>
|
1256
1255
|
</Fdn>
|
1257
1256
|
<Fls>
|
@@ -1871,5 +1870,15 @@ describe AIXM::Document do
|
|
1871
1870
|
</OFMX-Snapshot>
|
1872
1871
|
END
|
1873
1872
|
end
|
1873
|
+
|
1874
|
+
it "builds OFMX with one mid for every *Uid" do
|
1875
|
+
AIXM.ofmx!
|
1876
|
+
AIXM.config.mid_region = 'LF'
|
1877
|
+
xml = subject.to_xml
|
1878
|
+
#require 'pry'; binding.pry
|
1879
|
+
count_mid = xml.scan(/mid=/).count
|
1880
|
+
count_uid = xml.scan(/<\w+Uid[\s>]/).count
|
1881
|
+
_(count_mid).must_equal count_uid
|
1882
|
+
end
|
1874
1883
|
end
|
1875
1884
|
end
|
@@ -2,13 +2,13 @@ require_relative '../../spec_helper'
|
|
2
2
|
|
3
3
|
describe AIXM::GeometryError do
|
4
4
|
it "must be defined" do
|
5
|
-
AIXM::GeometryError.wont_be_nil
|
5
|
+
_(AIXM::GeometryError).wont_be_nil
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
9
|
|
10
10
|
describe AIXM::LayerError do
|
11
11
|
it "must be defined" do
|
12
|
-
AIXM::LayerError.wont_be_nil
|
12
|
+
_(AIXM::LayerError).wont_be_nil
|
13
13
|
end
|
14
14
|
end
|
data/spec/lib/aixm/f_spec.rb
CHANGED
@@ -7,21 +7,21 @@ describe AIXM::F do
|
|
7
7
|
|
8
8
|
describe :freq= do
|
9
9
|
it "fails on invalid values" do
|
10
|
-
[:foobar].wont_be_written_to subject, :freq
|
10
|
+
_([:foobar]).wont_be_written_to subject, :freq
|
11
11
|
end
|
12
12
|
|
13
13
|
it "converts Numeric to Float" do
|
14
|
-
subject.tap { |s| s.freq = 5 }.freq.must_equal 5.0
|
14
|
+
_(subject.tap { |s| s.freq = 5 }.freq).must_equal 5.0
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
18
|
describe :unit= do
|
19
19
|
it "fails on invalid values" do
|
20
|
-
[:foobar, 123].wont_be_written_to subject, :unit
|
20
|
+
_([:foobar, 123]).wont_be_written_to subject, :unit
|
21
21
|
end
|
22
22
|
|
23
23
|
it "symbolizes and downcases values" do
|
24
|
-
subject.tap { |s| s.unit = "MHz" }.unit.must_equal :mhz
|
24
|
+
_(subject.tap { |s| s.unit = "MHz" }.unit).must_equal :mhz
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -31,14 +31,14 @@ describe AIXM::F do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it "detect frequencies within a frequency band" do
|
34
|
-
subject.between?(90, 110, :mhz).must_equal true
|
35
|
-
subject.between?(90, 100, :mhz).must_equal true
|
36
|
-
subject.between?(100.0, 100.1, :mhz).must_equal true
|
34
|
+
_(subject.between?(90, 110, :mhz)).must_equal true
|
35
|
+
_(subject.between?(90, 100, :mhz)).must_equal true
|
36
|
+
_(subject.between?(100.0, 100.1, :mhz)).must_equal true
|
37
37
|
end
|
38
38
|
|
39
39
|
it "detect frequencies outside of a frequency band" do
|
40
|
-
subject.between?(90, 110, :khz).must_equal false
|
41
|
-
subject.between?(90, 95, :mhz).must_equal false
|
40
|
+
_(subject.between?(90, 110, :khz)).must_equal false
|
41
|
+
_(subject.between?(90, 95, :mhz)).must_equal false
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
@@ -46,40 +46,40 @@ describe AIXM::F do
|
|
46
46
|
it "recognizes objects with identical frequency and unit as equal" do
|
47
47
|
a = AIXM.f(123.0, :mhz)
|
48
48
|
b = AIXM.f(123, 'MHZ')
|
49
|
-
a.must_equal b
|
49
|
+
_(a).must_equal b
|
50
50
|
end
|
51
51
|
|
52
52
|
it "recognizes objects with different frequency or unit as unequal" do
|
53
53
|
a = AIXM.f(123.35, :mhz)
|
54
54
|
b = AIXM.f(123.35, :khz)
|
55
|
-
a.wont_equal b
|
55
|
+
_(a).wont_equal b
|
56
56
|
end
|
57
57
|
|
58
58
|
it "recognizes objects of different class as unequal" do
|
59
59
|
a = AIXM.f(123.35, :mhz)
|
60
60
|
b = :oggy
|
61
|
-
a.wont_equal b
|
61
|
+
_(a).wont_equal b
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
65
|
describe :hash do
|
66
66
|
it "returns an integer" do
|
67
|
-
subject.hash.must_be_instance_of Integer
|
67
|
+
_(subject.hash).must_be_instance_of Integer
|
68
68
|
end
|
69
69
|
|
70
70
|
it "allows for the use of instances as hash keys" do
|
71
71
|
dupe = subject.dup
|
72
|
-
{ subject => true }[dupe].must_equal true
|
72
|
+
_({ subject => true }[dupe]).must_equal true
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
76
|
describe :zero? do
|
77
77
|
it "returns true for zero frequency" do
|
78
|
-
subject.tap { |s| s.freq = 0 }.must_be :zero?
|
78
|
+
_(subject.tap { |s| s.freq = 0 }).must_be :zero?
|
79
79
|
end
|
80
80
|
|
81
81
|
it "returns false for non-zero frequency" do
|
82
|
-
subject.tap { |s| s.freq = 1 }.wont_be :zero?
|
82
|
+
_(subject.tap { |s| s.freq = 1 }).wont_be :zero?
|
83
83
|
end
|
84
84
|
end
|
85
85
|
end
|
@@ -7,13 +7,13 @@ describe AIXM::Feature::Address do
|
|
7
7
|
|
8
8
|
describe :type= do
|
9
9
|
it "fails on invalid values" do
|
10
|
-
|
11
|
-
|
10
|
+
_{ subject.type = :foobar }.must_raise ArgumentError
|
11
|
+
_{ subject.type = nil }.must_raise ArgumentError
|
12
12
|
end
|
13
13
|
|
14
14
|
it "looks up valid values" do
|
15
|
-
subject.tap { |s| s.type = :phone }.type.must_equal :phone
|
16
|
-
subject.tap { |s| s.type = :RADIO }.type.must_equal :radio_frequency
|
15
|
+
_(subject.tap { |s| s.type = :phone }.type).must_equal :phone
|
16
|
+
_(subject.tap { |s| s.type = :RADIO }.type).must_equal :radio_frequency
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -24,7 +24,7 @@ describe AIXM::Feature::Address do
|
|
24
24
|
describe :xml= do
|
25
25
|
it "builds correct OFMX" do
|
26
26
|
AIXM.ofmx!
|
27
|
-
subject.to_xml(as: :Xxx, sequence: 1).must_equal <<~END
|
27
|
+
_(subject.to_xml(as: :Xxx, sequence: 1)).must_equal <<~END
|
28
28
|
<!-- Address: RADIO -->
|
29
29
|
<Xxx source="LF|GEN|0.0 FACTORY|0|0">
|
30
30
|
<XxxUid>
|
@@ -37,10 +37,15 @@ describe AIXM::Feature::Address do
|
|
37
37
|
END
|
38
38
|
end
|
39
39
|
|
40
|
+
it "builds OFMX with mid" do
|
41
|
+
AIXM.ofmx!
|
42
|
+
AIXM.config.mid_region = 'LF'
|
43
|
+
_(subject.to_xml(as: :Xxx, sequence: 1)).must_match /<XxxUid mid="126bee70-4d4e-0032-ada9-81d3318fe6b7">/
|
44
|
+
end
|
45
|
+
|
40
46
|
it "builds correct AIXM" do
|
41
|
-
AIXM.aixm!
|
42
47
|
subject = AIXM.address(type: :weather_url, address: 'https://www.foo.bar')
|
43
|
-
subject.to_xml(as: :Xxx, sequence: 1).must_equal <<~END
|
48
|
+
_(subject.to_xml(as: :Xxx, sequence: 1)).must_equal <<~END
|
44
49
|
<!-- Address: URL-MET -->
|
45
50
|
<Xxx>
|
46
51
|
<XxxUid>
|
@@ -13,74 +13,74 @@ describe AIXM::Feature::Airport do
|
|
13
13
|
name: 'Avignon-Pujaut',
|
14
14
|
xy: AIXM.xy(lat: %q(43°59'46"N), long: %q(004°45'16"E))
|
15
15
|
)
|
16
|
-
subject.addresses.must_equal []
|
17
|
-
subject.runways.must_equal []
|
18
|
-
subject.helipads.must_equal []
|
19
|
-
subject.usage_limitations.must_equal []
|
16
|
+
_(subject.addresses).must_equal []
|
17
|
+
_(subject.runways).must_equal []
|
18
|
+
_(subject.helipads).must_equal []
|
19
|
+
_(subject.usage_limitations).must_equal []
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
describe :organisation= do
|
24
24
|
it "fails on invalid values" do
|
25
|
-
[nil, :foobar].wont_be_written_to subject, :organisation
|
25
|
+
_([nil, :foobar]).wont_be_written_to subject, :organisation
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
describe :id= do
|
30
30
|
it "fails on invalid values" do
|
31
|
-
[nil, 'A', 'ABCDE', 'AB 1234'].wont_be_written_to subject, :id
|
31
|
+
_([nil, 'A', 'ABCDE', 'AB 1234']).wont_be_written_to subject, :id
|
32
32
|
end
|
33
33
|
|
34
34
|
it "combines 2 character region with an 8 characters digest from name" do
|
35
|
-
subject.tap { |s| s.id = 'lf' }.id.must_equal 'LFD18754F5'
|
36
|
-
subject.tap { |s| s.name = 'OTHER'; s.id = 'lf' }.id.must_equal 'LFD646E0F9'
|
35
|
+
_(subject.tap { |s| s.id = 'lf' }.id).must_equal 'LFD18754F5'
|
36
|
+
_(subject.tap { |s| s.name = 'OTHER'; s.id = 'lf' }.id).must_equal 'LFD646E0F9'
|
37
37
|
end
|
38
38
|
|
39
39
|
it "upcases valid values" do
|
40
|
-
subject.tap { |s| s.id = 'lfnt' }.id.must_equal 'LFNT'
|
40
|
+
_(subject.tap { |s| s.id = 'lfnt' }.id).must_equal 'LFNT'
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
describe :name= do
|
45
45
|
it "fails on invalid values" do
|
46
|
-
[nil, 123].wont_be_written_to subject, :name
|
46
|
+
_([nil, 123]).wont_be_written_to subject, :name
|
47
47
|
end
|
48
48
|
|
49
49
|
it "upcases and transcodes valid values" do
|
50
|
-
subject.tap { |s| s.name = 'Nîmes-Alès' }.name.must_equal 'NIMES-ALES'
|
50
|
+
_(subject.tap { |s| s.name = 'Nîmes-Alès' }.name).must_equal 'NIMES-ALES'
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
54
|
describe :gps= do
|
55
55
|
it "fails on invalid values" do
|
56
|
-
[:foobar, 123].wont_be_written_to subject, :gps
|
56
|
+
_([:foobar, 123]).wont_be_written_to subject, :gps
|
57
57
|
end
|
58
58
|
|
59
59
|
it "accepts nil value" do
|
60
|
-
[nil].must_be_written_to subject, :gps
|
60
|
+
_([nil]).must_be_written_to subject, :gps
|
61
61
|
end
|
62
62
|
|
63
63
|
it "upcases valid values" do
|
64
|
-
subject.tap { |s| s.gps = 'Ebdeurne' }.gps.must_equal 'EBDEURNE'
|
64
|
+
_(subject.tap { |s| s.gps = 'Ebdeurne' }.gps).must_equal 'EBDEURNE'
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
68
|
describe :type= do
|
69
69
|
it "fails on invalid values" do
|
70
|
-
[nil, :foobar].wont_be_written_to subject, :type
|
70
|
+
_([nil, :foobar]).wont_be_written_to subject, :type
|
71
71
|
end
|
72
72
|
|
73
73
|
it "fails on values derived from runways and helipads" do
|
74
|
-
[:aerodrome, :heliport, :aerodrome_and_heliport].wont_be_written_to subject, :type
|
74
|
+
_([:aerodrome, :heliport, :aerodrome_and_heliport]).wont_be_written_to subject, :type
|
75
75
|
end
|
76
76
|
|
77
77
|
it "looks up valid values" do
|
78
|
-
subject.tap { |s| s.type = :landing_site }.type.must_equal :landing_site
|
79
|
-
subject.tap { |s| s.type = :LS }.type.must_equal :landing_site
|
78
|
+
_(subject.tap { |s| s.type = :landing_site }.type).must_equal :landing_site
|
79
|
+
_(subject.tap { |s| s.type = :LS }.type).must_equal :landing_site
|
80
80
|
end
|
81
81
|
|
82
82
|
it "derives values from runways and helipads" do
|
83
|
-
subject.type.must_equal :aerodrome_and_heliport
|
83
|
+
_(subject.type).must_equal :aerodrome_and_heliport
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
@@ -88,7 +88,7 @@ describe AIXM::Feature::Airport do
|
|
88
88
|
macro :xy
|
89
89
|
|
90
90
|
it "fails on nil values" do
|
91
|
-
[nil].wont_be_written_to subject, :xy
|
91
|
+
_([nil]).wont_be_written_to subject, :xy
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
@@ -96,32 +96,32 @@ describe AIXM::Feature::Airport do
|
|
96
96
|
macro :z_qnh
|
97
97
|
|
98
98
|
it "accepts nil value" do
|
99
|
-
[nil].must_be_written_to subject, :z
|
99
|
+
_([nil]).must_be_written_to subject, :z
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
103
103
|
describe :declination= do
|
104
104
|
it "fails on invalid values" do
|
105
|
-
[:foobar, false].wont_be_written_to subject, :declination
|
105
|
+
_([:foobar, false]).wont_be_written_to subject, :declination
|
106
106
|
end
|
107
107
|
|
108
108
|
it "accepts nil value" do
|
109
|
-
[nil].must_be_written_to subject, :declination
|
109
|
+
_([nil]).must_be_written_to subject, :declination
|
110
110
|
end
|
111
111
|
|
112
112
|
it "converts valid values to Float" do
|
113
|
-
subject.tap { |s| s.declination = 10 }.declination.must_equal 10.0
|
114
|
-
subject.tap { |s| s.declination = 20.0 }.declination.must_equal 20.0
|
113
|
+
_(subject.tap { |s| s.declination = 10 }.declination).must_equal 10.0
|
114
|
+
_(subject.tap { |s| s.declination = 20.0 }.declination).must_equal 20.0
|
115
115
|
end
|
116
116
|
end
|
117
117
|
|
118
118
|
describe :transition_z= do
|
119
119
|
it "fails on invalid values" do
|
120
|
-
[123, AIXM.z(123, :qfe)].wont_be_written_to subject, :transition_z
|
120
|
+
_([123, AIXM.z(123, :qfe)]).wont_be_written_to subject, :transition_z
|
121
121
|
end
|
122
122
|
|
123
123
|
it "accepts valid values" do
|
124
|
-
[nil, AIXM.z(123, :qnh)].must_be_written_to subject, :transition_z
|
124
|
+
_([nil, AIXM.z(123, :qnh)]).must_be_written_to subject, :transition_z
|
125
125
|
end
|
126
126
|
end
|
127
127
|
|
@@ -131,15 +131,15 @@ describe AIXM::Feature::Airport do
|
|
131
131
|
|
132
132
|
describe :operator= do
|
133
133
|
it "fails on invalid values" do
|
134
|
-
[123].wont_be_written_to subject, :operator
|
134
|
+
_([123]).wont_be_written_to subject, :operator
|
135
135
|
end
|
136
136
|
|
137
137
|
it "accepts nil value" do
|
138
|
-
[nil].must_be_written_to subject, :operator
|
138
|
+
_([nil]).must_be_written_to subject, :operator
|
139
139
|
end
|
140
140
|
|
141
141
|
it "upcases and transcodes valid values" do
|
142
|
-
subject.tap { |s| s.operator = 'Municipality of Nîmes-Alès' }.operator.must_equal 'MUNICIPALITY OF NIMES-ALES'
|
142
|
+
_(subject.tap { |s| s.operator = 'Municipality of Nîmes-Alès' }.operator).must_equal 'MUNICIPALITY OF NIMES-ALES'
|
143
143
|
end
|
144
144
|
end
|
145
145
|
|
@@ -149,51 +149,51 @@ describe AIXM::Feature::Airport do
|
|
149
149
|
|
150
150
|
describe :add_address do
|
151
151
|
it "fails on invalid arguments" do
|
152
|
-
|
152
|
+
_{ subject.add_address nil }.must_raise ArgumentError
|
153
153
|
end
|
154
154
|
|
155
155
|
it "adds address to the array" do
|
156
156
|
count = subject.addresses.count
|
157
157
|
subject.add_address(AIXM::Factory.address)
|
158
|
-
subject.addresses.count.must_equal count + 1
|
158
|
+
_(subject.addresses.count).must_equal count + 1
|
159
159
|
end
|
160
160
|
end
|
161
161
|
|
162
162
|
describe :add_runway do
|
163
163
|
it "fails on invalid arguments" do
|
164
|
-
|
164
|
+
_{ subject.add_runway nil }.must_raise ArgumentError
|
165
165
|
end
|
166
166
|
|
167
167
|
it "adds runway to the array" do
|
168
168
|
count = subject.runways.count
|
169
169
|
subject.add_runway(AIXM.runway(name: '10'))
|
170
|
-
subject.runways.count.must_equal count + 1
|
170
|
+
_(subject.runways.count).must_equal count + 1
|
171
171
|
end
|
172
172
|
end
|
173
173
|
|
174
174
|
describe :add_helipad do
|
175
175
|
it "fails on invalid arguments" do
|
176
|
-
|
176
|
+
_{ subject.add_helipad nil }.must_raise ArgumentError
|
177
177
|
end
|
178
178
|
|
179
179
|
it "adds helipad to the array" do
|
180
180
|
count = subject.helipads.count
|
181
181
|
subject.add_helipad(AIXM.helipad(name: 'H2', xy: AIXM::Factory.xy))
|
182
|
-
subject.helipads.count.must_equal count + 1
|
182
|
+
_(subject.helipads.count).must_equal count + 1
|
183
183
|
end
|
184
184
|
end
|
185
185
|
|
186
186
|
describe :add_usage_limitation do
|
187
187
|
it "fails on invalid arguments" do
|
188
|
-
|
188
|
+
_{ subject.add_usage_limitation(:foobar) }.must_raise ArgumentError
|
189
189
|
end
|
190
190
|
|
191
191
|
context "without block" do
|
192
192
|
it "accepts simple limitation" do
|
193
193
|
count = subject.usage_limitations.count
|
194
194
|
subject.add_usage_limitation(:permitted)
|
195
|
-
subject.usage_limitations.count.must_equal count + 1
|
196
|
-
subject.usage_limitations.last.type.must_equal :permitted
|
195
|
+
_(subject.usage_limitations.count).must_equal count + 1
|
196
|
+
_(subject.usage_limitations.last.type).must_equal :permitted
|
197
197
|
end
|
198
198
|
end
|
199
199
|
|
@@ -204,8 +204,8 @@ describe AIXM::Feature::Airport do
|
|
204
204
|
permitted.add_condition { |c| c.aircraft = :glider }
|
205
205
|
permitted.add_condition { |c| c.rule = :ifr }
|
206
206
|
end
|
207
|
-
subject.usage_limitations.count.must_equal count + 1
|
208
|
-
subject.usage_limitations.last.conditions.count.must_equal 2
|
207
|
+
_(subject.usage_limitations.count).must_equal count + 1
|
208
|
+
_(subject.usage_limitations.last.conditions.count).must_equal 2
|
209
209
|
end
|
210
210
|
end
|
211
211
|
end
|
@@ -215,7 +215,7 @@ describe AIXM::Feature::Airport do
|
|
215
215
|
AIXM.ofmx!
|
216
216
|
subject.add_address(AIXM.address(source: "LF|GEN|0.0 FACTORY|0|0", type: :url, address: 'https://lfnt.tower.zone'))
|
217
217
|
subject.add_address(AIXM.address(source: "LF|GEN|0.0 FACTORY|0|0", type: :url, address: 'https://planeur-avignon-pujaut.fr'))
|
218
|
-
subject.to_xml.must_equal <<~END
|
218
|
+
_(subject.to_xml).must_equal <<~END
|
219
219
|
<!-- Airport: LFNT AVIGNON-PUJAUT -->
|
220
220
|
<Ahp source="LF|GEN|0.0 FACTORY|0|0">
|
221
221
|
<AhpUid>
|
@@ -280,7 +280,7 @@ describe AIXM::Feature::Airport do
|
|
280
280
|
<geoLat>44.00211944N</geoLat>
|
281
281
|
<geoLong>004.75216944E</geoLong>
|
282
282
|
<valTrueBrg>165</valTrueBrg>
|
283
|
-
<valMagBrg>
|
283
|
+
<valMagBrg>164</valMagBrg>
|
284
284
|
<valElevTdz>145</valElevTdz>
|
285
285
|
<uomElevTdz>FT</uomElevTdz>
|
286
286
|
<codeVfrPattern>E</codeVfrPattern>
|
@@ -335,7 +335,7 @@ describe AIXM::Feature::Airport do
|
|
335
335
|
<geoLat>43.99036389N</geoLat>
|
336
336
|
<geoLong>004.75645556E</geoLong>
|
337
337
|
<valTrueBrg>345</valTrueBrg>
|
338
|
-
<valMagBrg>
|
338
|
+
<valMagBrg>344</valMagBrg>
|
339
339
|
<valElevTdz>147</valElevTdz>
|
340
340
|
<uomElevTdz>FT</uomElevTdz>
|
341
341
|
<codeVfrPattern>L</codeVfrPattern>
|
@@ -418,7 +418,7 @@ describe AIXM::Feature::Airport do
|
|
418
418
|
<txtDesig>35</txtDesig>
|
419
419
|
</FdnUid>
|
420
420
|
<valTrueBrg>355</valTrueBrg>
|
421
|
-
<valMagBrg>
|
421
|
+
<valMagBrg>354</valMagBrg>
|
422
422
|
<txtRmk>Avoid flight over residental area</txtRmk>
|
423
423
|
</Fdn>
|
424
424
|
<Fls>
|
@@ -567,7 +567,7 @@ describe AIXM::Feature::Airport do
|
|
567
567
|
subject.instance_eval { @fatos.clear }
|
568
568
|
subject.instance_eval { @helipads.clear }
|
569
569
|
subject.instance_eval { @usage_limitations.clear }
|
570
|
-
subject.to_xml.must_equal <<~END
|
570
|
+
_(subject.to_xml).must_equal <<~END
|
571
571
|
<!-- Airport: LFNT AVIGNON-PUJAUT -->
|
572
572
|
<Ahp source="LF|GEN|0.0 FACTORY|0|0">
|
573
573
|
<AhpUid>
|
@@ -586,6 +586,12 @@ describe AIXM::Feature::Airport do
|
|
586
586
|
END
|
587
587
|
end
|
588
588
|
end
|
589
|
+
|
590
|
+
it "builds OFMX with mid" do
|
591
|
+
AIXM.ofmx!
|
592
|
+
AIXM.config.mid_region = 'LF'
|
593
|
+
_(subject.to_xml).must_match /<AhpUid mid="c63504f4-c1d9-1b88-f2ca-2c35a25d8bf3">/
|
594
|
+
end
|
589
595
|
end
|
590
596
|
|
591
597
|
describe AIXM::Feature::Airport::UsageLimitation do
|
@@ -595,18 +601,18 @@ describe AIXM::Feature::Airport::UsageLimitation do
|
|
595
601
|
|
596
602
|
describe :initialize do
|
597
603
|
it "sets defaults" do
|
598
|
-
subject.conditions.must_equal []
|
604
|
+
_(subject.conditions).must_equal []
|
599
605
|
end
|
600
606
|
end
|
601
607
|
|
602
608
|
describe :type= do
|
603
609
|
it "fails on invalid values" do
|
604
|
-
[nil, :foobar].wont_be_written_to subject, :type
|
610
|
+
_([nil, :foobar]).wont_be_written_to subject, :type
|
605
611
|
end
|
606
612
|
|
607
613
|
it "looks up valid values" do
|
608
|
-
subject.tap { |s| s.type = :permitted }.type.must_equal :permitted
|
609
|
-
subject.tap { |s| s.type = :RESERV }.type.must_equal :reservation_required
|
614
|
+
_(subject.tap { |s| s.type = :permitted }.type).must_equal :permitted
|
615
|
+
_(subject.tap { |s| s.type = :RESERV }.type).must_equal :reservation_required
|
610
616
|
end
|
611
617
|
end
|
612
618
|
|
@@ -622,7 +628,7 @@ describe AIXM::Feature::Airport::UsageLimitation do
|
|
622
628
|
it "builds correct complete OFMX" do
|
623
629
|
AIXM.ofmx!
|
624
630
|
subject = AIXM::Factory.airport.usage_limitations.last
|
625
|
-
subject.to_xml.must_equal <<~END
|
631
|
+
_(subject.to_xml).must_equal <<~END
|
626
632
|
<UsageLimitation>
|
627
633
|
<codeUsageLimitation>RESERV</codeUsageLimitation>
|
628
634
|
<UsageCondition>
|
@@ -645,7 +651,7 @@ describe AIXM::Feature::Airport::UsageLimitation do
|
|
645
651
|
|
646
652
|
it "builds correct minimal OFMX" do
|
647
653
|
AIXM.ofmx!
|
648
|
-
subject.to_xml.must_equal <<~END
|
654
|
+
_(subject.to_xml).must_equal <<~END
|
649
655
|
<UsageLimitation>
|
650
656
|
<codeUsageLimitation>PERMIT</codeUsageLimitation>
|
651
657
|
</UsageLimitation>
|
@@ -661,76 +667,76 @@ describe AIXM::Feature::Airport::UsageLimitation::Condition do
|
|
661
667
|
|
662
668
|
describe :aircraft= do
|
663
669
|
it "fails on invalid values" do
|
664
|
-
[:foobar, 123].wont_be_written_to subject, :aircraft
|
670
|
+
_([:foobar, 123]).wont_be_written_to subject, :aircraft
|
665
671
|
end
|
666
672
|
|
667
673
|
it "accepts nil value" do
|
668
|
-
[nil].must_be_written_to subject, :aircraft
|
674
|
+
_([nil]).must_be_written_to subject, :aircraft
|
669
675
|
end
|
670
676
|
|
671
677
|
it "looks up valid values" do
|
672
|
-
subject.tap { |s| s.aircraft = :glider }.aircraft.must_equal :glider
|
673
|
-
subject.tap { |s| s.aircraft = :H }.aircraft.must_equal :helicopter
|
678
|
+
_(subject.tap { |s| s.aircraft = :glider }.aircraft).must_equal :glider
|
679
|
+
_(subject.tap { |s| s.aircraft = :H }.aircraft).must_equal :helicopter
|
674
680
|
end
|
675
681
|
end
|
676
682
|
|
677
683
|
describe :rule= do
|
678
684
|
it "fails on invalid values" do
|
679
|
-
[:foobar, 123].wont_be_written_to subject, :rule
|
685
|
+
_([:foobar, 123]).wont_be_written_to subject, :rule
|
680
686
|
end
|
681
687
|
|
682
688
|
it "accepts nil value" do
|
683
|
-
[nil].must_be_written_to subject, :rule
|
689
|
+
_([nil]).must_be_written_to subject, :rule
|
684
690
|
end
|
685
691
|
|
686
692
|
it "looks up valid values" do
|
687
|
-
subject.tap { |s| s.rule = :ifr }.rule.must_equal :ifr
|
688
|
-
subject.tap { |s| s.rule = :IV }.rule.must_equal :ifr_and_vfr
|
693
|
+
_(subject.tap { |s| s.rule = :ifr }.rule).must_equal :ifr
|
694
|
+
_(subject.tap { |s| s.rule = :IV }.rule).must_equal :ifr_and_vfr
|
689
695
|
end
|
690
696
|
end
|
691
697
|
|
692
698
|
describe :realm= do
|
693
699
|
it "fails on invalid values" do
|
694
|
-
[:foobar, 123].wont_be_written_to subject, :realm
|
700
|
+
_([:foobar, 123]).wont_be_written_to subject, :realm
|
695
701
|
end
|
696
702
|
|
697
703
|
it "accepts nil value" do
|
698
|
-
[nil].must_be_written_to subject, :realm
|
704
|
+
_([nil]).must_be_written_to subject, :realm
|
699
705
|
end
|
700
706
|
|
701
707
|
it "looks up valid values" do
|
702
|
-
subject.tap { |s| s.realm = :civilian }.realm.must_equal :civilian
|
703
|
-
subject.tap { |s| s.realm = :MIL }.realm.must_equal :military
|
708
|
+
_(subject.tap { |s| s.realm = :civilian }.realm).must_equal :civilian
|
709
|
+
_(subject.tap { |s| s.realm = :MIL }.realm).must_equal :military
|
704
710
|
end
|
705
711
|
end
|
706
712
|
|
707
713
|
describe :origin= do
|
708
714
|
it "fails on invalid values" do
|
709
|
-
[:foobar, 123].wont_be_written_to subject, :origin
|
715
|
+
_([:foobar, 123]).wont_be_written_to subject, :origin
|
710
716
|
end
|
711
717
|
|
712
718
|
it "accepts nil value" do
|
713
|
-
[nil].must_be_written_to subject, :origin
|
719
|
+
_([nil]).must_be_written_to subject, :origin
|
714
720
|
end
|
715
721
|
|
716
722
|
it "looks up valid values" do
|
717
|
-
subject.tap { |s| s.origin = :international }.origin.must_equal :international
|
718
|
-
subject.tap { |s| s.origin = :NTL }.origin.must_equal :national
|
723
|
+
_(subject.tap { |s| s.origin = :international }.origin).must_equal :international
|
724
|
+
_(subject.tap { |s| s.origin = :NTL }.origin).must_equal :national
|
719
725
|
end
|
720
726
|
end
|
721
727
|
|
722
728
|
describe :purpose= do
|
723
729
|
it "fails on invalid values" do
|
724
|
-
[:foobar, 123].wont_be_written_to subject, :purpose
|
730
|
+
_([:foobar, 123]).wont_be_written_to subject, :purpose
|
725
731
|
end
|
726
732
|
|
727
733
|
it "accepts nil value" do
|
728
|
-
[nil].must_be_written_to subject, :purpose
|
734
|
+
_([nil]).must_be_written_to subject, :purpose
|
729
735
|
end
|
730
736
|
|
731
737
|
it "looks up valid values" do
|
732
|
-
subject.tap { |s| s.purpose = :private }.purpose.must_equal :private
|
733
|
-
subject.tap { |s| s.purpose = :TRG }.purpose.must_equal :school_or_training
|
738
|
+
_(subject.tap { |s| s.purpose = :private }.purpose).must_equal :private
|
739
|
+
_(subject.tap { |s| s.purpose = :TRG }.purpose).must_equal :school_or_training
|
734
740
|
end
|
735
741
|
end
|
736
742
|
|
@@ -741,7 +747,7 @@ describe AIXM::Feature::Airport::UsageLimitation::Condition do
|
|
741
747
|
subject.origin = :international
|
742
748
|
subject.purpose = :school_or_training
|
743
749
|
AIXM.ofmx!
|
744
|
-
subject.to_xml.must_equal <<~END
|
750
|
+
_(subject.to_xml).must_equal <<~END
|
745
751
|
<UsageCondition>
|
746
752
|
<AircraftClass>
|
747
753
|
<codeType>E</codeType>
|
@@ -758,7 +764,7 @@ describe AIXM::Feature::Airport::UsageLimitation::Condition do
|
|
758
764
|
|
759
765
|
it "builds correct minimal OFMX" do
|
760
766
|
AIXM.ofmx!
|
761
|
-
subject.to_xml.must_equal <<~END
|
767
|
+
_(subject.to_xml).must_equal <<~END
|
762
768
|
<UsageCondition>
|
763
769
|
<AircraftClass>
|
764
770
|
<codeType>E</codeType>
|