aixm 0.2.3 → 0.3.0

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.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.ruby-version +1 -1
  4. data/.yardopts +3 -0
  5. data/CHANGELOG.md +34 -14
  6. data/Guardfile +1 -0
  7. data/README.md +64 -257
  8. data/lib/aixm.rb +16 -7
  9. data/lib/aixm/component.rb +6 -0
  10. data/lib/aixm/component/frequency.rb +135 -0
  11. data/lib/aixm/component/geometry.rb +34 -23
  12. data/lib/aixm/component/geometry/arc.rb +37 -22
  13. data/lib/aixm/component/geometry/border.rb +29 -20
  14. data/lib/aixm/component/geometry/circle.rb +39 -22
  15. data/lib/aixm/component/geometry/point.rb +29 -13
  16. data/lib/aixm/component/helipad.rb +154 -0
  17. data/lib/aixm/component/layer.rb +91 -0
  18. data/lib/aixm/component/runway.rb +294 -0
  19. data/lib/aixm/component/service.rb +170 -0
  20. data/lib/aixm/component/timetable.rb +65 -0
  21. data/lib/aixm/component/vertical_limits.rb +65 -29
  22. data/lib/aixm/config.rb +87 -0
  23. data/lib/aixm/document.rb +66 -42
  24. data/lib/aixm/errors.rb +11 -0
  25. data/lib/aixm/f.rb +34 -20
  26. data/lib/aixm/feature.rb +38 -0
  27. data/lib/aixm/feature/airport.rb +473 -0
  28. data/lib/aixm/feature/airspace.rb +145 -92
  29. data/lib/aixm/feature/navigational_aid.rb +94 -0
  30. data/lib/aixm/feature/navigational_aid/designated_point.rb +50 -54
  31. data/lib/aixm/feature/navigational_aid/dme.rb +48 -40
  32. data/lib/aixm/feature/navigational_aid/marker.rb +55 -45
  33. data/lib/aixm/feature/navigational_aid/ndb.rb +54 -50
  34. data/lib/aixm/feature/navigational_aid/tacan.rb +38 -31
  35. data/lib/aixm/feature/navigational_aid/vor.rb +84 -76
  36. data/lib/aixm/feature/organisation.rb +97 -0
  37. data/lib/aixm/feature/unit.rb +152 -0
  38. data/lib/aixm/refinements.rb +132 -47
  39. data/lib/aixm/shortcuts.rb +11 -6
  40. data/lib/aixm/version.rb +1 -1
  41. data/lib/aixm/xy.rb +64 -20
  42. data/lib/aixm/z.rb +51 -22
  43. data/{lib/aixm/schemas → schemas/aixm}/4.5/AIXM-DataTypes.xsd +0 -0
  44. data/{lib/aixm/schemas → schemas/aixm}/4.5/AIXM-Features.xsd +0 -0
  45. data/{lib/aixm/schemas → schemas/aixm}/4.5/AIXM-Snapshot.xsd +0 -0
  46. data/schemas/ofmx/0/OFMX-DataTypes.xsd +5077 -0
  47. data/schemas/ofmx/0/OFMX-Features.xsd +9955 -0
  48. data/schemas/ofmx/0/OFMX-Snapshot.xsd +217 -0
  49. data/spec/factory.rb +209 -33
  50. data/spec/lib/aixm/component/frequency_spec.rb +75 -0
  51. data/spec/lib/aixm/component/geometry/arc_spec.rb +28 -22
  52. data/spec/lib/aixm/component/geometry/border_spec.rb +23 -20
  53. data/spec/lib/aixm/component/geometry/circle_spec.rb +31 -22
  54. data/spec/lib/aixm/component/geometry/point_spec.rb +11 -14
  55. data/spec/lib/aixm/component/geometry_spec.rb +150 -69
  56. data/spec/lib/aixm/component/helipad_spec.rb +136 -0
  57. data/spec/lib/aixm/component/layer_spec.rb +110 -0
  58. data/spec/lib/aixm/component/runway_spec.rb +402 -0
  59. data/spec/lib/aixm/component/service_spec.rb +61 -0
  60. data/spec/lib/aixm/component/timetable_spec.rb +49 -0
  61. data/spec/lib/aixm/component/vertical_limits_spec.rb +39 -20
  62. data/spec/lib/aixm/config_spec.rb +41 -0
  63. data/spec/lib/aixm/document_spec.rb +637 -147
  64. data/spec/lib/aixm/errors_spec.rb +14 -0
  65. data/spec/lib/aixm/f_spec.rb +17 -10
  66. data/spec/lib/aixm/feature/airport_spec.rb +546 -0
  67. data/spec/lib/aixm/feature/airspace_spec.rb +349 -226
  68. data/spec/lib/aixm/feature/navigational_aid/designated_point_spec.rb +47 -36
  69. data/spec/lib/aixm/feature/navigational_aid/dme_spec.rb +61 -36
  70. data/spec/lib/aixm/feature/navigational_aid/marker_spec.rb +61 -113
  71. data/spec/lib/aixm/feature/navigational_aid/ndb_spec.rb +65 -79
  72. data/spec/lib/aixm/feature/navigational_aid/tacan_spec.rb +57 -36
  73. data/spec/lib/aixm/feature/navigational_aid/vor_spec.rb +86 -112
  74. data/spec/lib/aixm/feature/navigational_aid_spec.rb +52 -0
  75. data/spec/lib/aixm/feature/organisation_spec.rb +77 -0
  76. data/spec/lib/aixm/feature/unit_spec.rb +227 -0
  77. data/spec/lib/aixm/feature_spec.rb +58 -0
  78. data/spec/lib/aixm/refinements_spec.rb +187 -178
  79. data/spec/lib/aixm/xy_spec.rb +45 -34
  80. data/spec/lib/aixm/z_spec.rb +19 -21
  81. data/spec/macros/organisation.rb +11 -0
  82. data/spec/macros/remarks.rb +12 -0
  83. data/spec/macros/timetable.rb +11 -0
  84. data/spec/macros/xy.rb +11 -0
  85. data/spec/macros/z_qnh.rb +11 -0
  86. data/spec/spec_helper.rb +26 -0
  87. metadata +60 -19
  88. data/lib/aixm/base.rb +0 -10
  89. data/lib/aixm/component/base.rb +0 -6
  90. data/lib/aixm/component/class_layer.rb +0 -46
  91. data/lib/aixm/component/geometry/base.rb +0 -8
  92. data/lib/aixm/component/schedule.rb +0 -43
  93. data/lib/aixm/feature/base.rb +0 -6
  94. data/lib/aixm/feature/navigational_aid/base.rb +0 -79
  95. data/spec/lib/aixm/component/class_layer_spec.rb +0 -74
  96. data/spec/lib/aixm/component/schedule_spec.rb +0 -33
  97. data/spec/lib/aixm/feature/navigational_aid/base_spec.rb +0 -41
@@ -1,50 +1,71 @@
1
1
  require_relative '../../../../spec_helper'
2
2
 
3
3
  describe AIXM::Feature::NavigationalAid::TACAN do
4
- context "complete" do
5
- subject do
6
- AIXM::Factory.tacan
4
+ subject do
5
+ AIXM::Factory.tacan
6
+ end
7
+
8
+ describe :channel= do
9
+ it "fails on invalid values" do
10
+ [nil, :foobar, 123].wont_be_written_to subject, :channel
7
11
  end
8
12
 
9
- let :digest do
10
- subject.to_digest
13
+ it "upcases value" do
14
+ subject.tap { |s| s.channel = '3x' }.channel.must_equal '3X'
11
15
  end
16
+ end
12
17
 
13
- describe :kind do
14
- it "must return class/type combo" do
15
- subject.kind.must_equal "TACAN"
16
- end
18
+ describe :kind do
19
+ it "must return class/type combo" do
20
+ subject.kind.must_equal "TACAN"
17
21
  end
22
+ end
18
23
 
19
- describe :to_digest do
20
- it "must return digest of payload" do
21
- subject.to_digest.must_equal 648449590
22
- end
24
+ describe :to_xml do
25
+ it "builds correct complete OFMX" do
26
+ AIXM.ofmx!
27
+ subject.to_xml.must_equal <<~END
28
+ <!-- NavigationalAid: [TACAN] TACAN NAVAID -->
29
+ <Tcn source="LF|GEN|0.0 FACTORY|0|0">
30
+ <TcnUid region="LF">
31
+ <codeId>TTT</codeId>
32
+ <geoLat>47.85916667N</geoLat>
33
+ <geoLong>007.56000000E</geoLong>
34
+ </TcnUid>
35
+ <OrgUid region="LF">
36
+ <txtName>FRANCE</txtName>
37
+ </OrgUid>
38
+ <txtName>TACAN NAVAID</txtName>
39
+ <codeChannel>29X</codeChannel>
40
+ <codeDatum>WGE</codeDatum>
41
+ <valElev>500</valElev>
42
+ <uomDistVer>FT</uomDistVer>
43
+ <Ttt>
44
+ <codeWorkHr>H24</codeWorkHr>
45
+ </Ttt>
46
+ <txtRmk>tacan navaid</txtRmk>
47
+ </Tcn>
48
+ END
23
49
  end
24
50
 
25
- describe :to_aixm do
26
- it "must build correct XML with OFM extension" do
27
- subject.to_aixm(:ofm).must_equal <<~END
28
- <!-- NavigationalAid: [TACAN] TACAN NAVAID -->
29
- <Tcn>
30
- <TcnUid mid="#{digest}" newEntity="true">
31
- <codeId>TTT</codeId>
32
- <geoLat>47.85916667N</geoLat>
33
- <geoLong>7.56000000E</geoLong>
34
- </TcnUid>
35
- <OrgUid/>
36
- <txtName>TACAN NAVAID</txtName>
37
- <codeChannel>29X</codeChannel>
38
- <codeDatum>WGE</codeDatum>
39
- <valElev>500</valElev>
40
- <uomDistVer>FT</uomDistVer>
41
- <Ttt>
42
- <codeWorkHr>H24</codeWorkHr>
43
- </Ttt>
44
- <txtRmk>tacan navaid</txtRmk>
45
- </Tcn>
46
- END
47
- end
51
+ it "builds correct minimal OFMX" do
52
+ AIXM.ofmx!
53
+ subject.name = subject.z = subject.timetable = subject.remarks = nil
54
+ subject.to_xml.must_equal <<~END
55
+ <!-- NavigationalAid: [TACAN] UNNAMED -->
56
+ <Tcn source="LF|GEN|0.0 FACTORY|0|0">
57
+ <TcnUid region="LF">
58
+ <codeId>TTT</codeId>
59
+ <geoLat>47.85916667N</geoLat>
60
+ <geoLong>007.56000000E</geoLong>
61
+ </TcnUid>
62
+ <OrgUid region="LF">
63
+ <txtName>FRANCE</txtName>
64
+ </OrgUid>
65
+ <codeChannel>29X</codeChannel>
66
+ <codeDatum>WGE</codeDatum>
67
+ </Tcn>
68
+ END
48
69
  end
49
70
  end
50
71
  end
@@ -1,25 +1,41 @@
1
1
  require_relative '../../../../spec_helper'
2
2
 
3
3
  describe AIXM::Feature::NavigationalAid::VOR do
4
- describe :initialize do
5
- let :f do
6
- AIXM.f(111, :mhz)
4
+ context "VOR" do
5
+ subject do
6
+ AIXM::Factory.vor
7
7
  end
8
8
 
9
- it "won't accept invalid arguments" do
10
- -> { AIXM.vor(id: 'V', name: 'VOR', xy: AIXM::Factory.xy, type: :foo, f: f, north: :geographic) }.must_raise ArgumentError
11
- -> { AIXM.vor(id: 'V', name: 'VOR', xy: AIXM::Factory.xy, type: :conventional, f: 0, north: :geographic) }.must_raise ArgumentError
12
- -> { AIXM.vor(id: 'V', name: 'VOR', xy: AIXM::Factory.xy, type: :conventional, f: f, north: :foobar) }.must_raise ArgumentError
9
+ describe :type= do
10
+ it "fails on invalid values" do
11
+ [nil, :foobar, 123].wont_be_written_to subject, :type
12
+ end
13
+
14
+ it "looks up valid values" do
15
+ subject.tap { |s| s.type = :conventional }.type.must_equal :conventional
16
+ subject.tap { |s| s.type = :DVOR }.type.must_equal :doppler
17
+ end
13
18
  end
14
- end
15
19
 
16
- context "complete conventional VOR" do
17
- subject do
18
- AIXM::Factory.vor
20
+ describe :f= do
21
+ it "fails on invalid values" do
22
+ [nil, :foobar, 123].wont_be_written_to subject, :f
23
+ end
24
+
25
+ it "accepts valid values" do
26
+ [AIXM.f(110, :mhz)].must_be_written_to subject, :f
27
+ end
19
28
  end
20
29
 
21
- let :digest do
22
- subject.to_digest
30
+ describe :north= do
31
+ it "fails on invalid values" do
32
+ [nil, :foobar, 123].wont_be_written_to subject, :north
33
+ end
34
+
35
+ it "looks up valid values" do
36
+ subject.tap { |s| s.north = :magnetic }.north.must_equal :magnetic
37
+ subject.tap { |s| s.north = :TRUE }.north.must_equal :geographic
38
+ end
23
39
  end
24
40
 
25
41
  describe :kind do
@@ -28,23 +44,20 @@ describe AIXM::Feature::NavigationalAid::VOR do
28
44
  end
29
45
  end
30
46
 
31
- describe :to_digest do
32
- it "must return digest of payload" do
33
- subject.to_digest.must_equal 904391566
34
- end
35
- end
36
-
37
- describe :to_aixm do
38
- it "must build correct XML of VOR with OFM extension" do
39
- subject.to_aixm(:ofm).must_equal <<~END
47
+ describe :to_xml do
48
+ it "builds correct complete OFMX" do
49
+ AIXM.ofmx!
50
+ subject.to_xml.must_equal <<~END
40
51
  <!-- NavigationalAid: [VOR:VOR] VOR NAVAID -->
41
- <Vor>
42
- <VorUid mid="#{digest}" newEntity="true">
52
+ <Vor source="LF|GEN|0.0 FACTORY|0|0">
53
+ <VorUid region="LF">
43
54
  <codeId>VVV</codeId>
44
55
  <geoLat>47.85916667N</geoLat>
45
- <geoLong>7.56000000E</geoLong>
56
+ <geoLong>007.56000000E</geoLong>
46
57
  </VorUid>
47
- <OrgUid/>
58
+ <OrgUid region="LF">
59
+ <txtName>FRANCE</txtName>
60
+ </OrgUid>
48
61
  <txtName>VOR NAVAID</txtName>
49
62
  <codeType>VOR</codeType>
50
63
  <valFreq>111</valFreq>
@@ -60,62 +73,33 @@ describe AIXM::Feature::NavigationalAid::VOR do
60
73
  </Vor>
61
74
  END
62
75
  end
63
- end
64
- end
65
-
66
- context "complete Doppler VOR" do
67
- subject do
68
- AIXM::Factory.vor.tap do |vor|
69
- vor.type = :doppler
70
- end
71
- end
72
-
73
- let :digest do
74
- subject.to_digest
75
- end
76
-
77
- describe :kind do
78
- it "must return class/type combo" do
79
- subject.kind.must_equal "VOR:DVOR"
80
- end
81
- end
82
76
 
83
- describe :to_digest do
84
- it "must return digest of payload" do
85
- subject.to_digest.must_equal 293163781
86
- end
87
- end
88
-
89
- describe :to_aixm do
90
- it "must build correct XML of VOR with OFM extension" do
91
- subject.to_aixm(:ofm).must_equal <<~END
92
- <!-- NavigationalAid: [VOR:DVOR] VOR NAVAID -->
93
- <Vor>
94
- <VorUid mid="#{digest}" newEntity="true">
77
+ it "builds correct minimal OFMX" do
78
+ AIXM.ofmx!
79
+ subject.name = subject.z = subject.timetable = subject.remarks = nil
80
+ subject.to_xml.must_equal <<~END
81
+ <!-- NavigationalAid: [VOR:VOR] UNNAMED -->
82
+ <Vor source="LF|GEN|0.0 FACTORY|0|0">
83
+ <VorUid region="LF">
95
84
  <codeId>VVV</codeId>
96
85
  <geoLat>47.85916667N</geoLat>
97
- <geoLong>7.56000000E</geoLong>
86
+ <geoLong>007.56000000E</geoLong>
98
87
  </VorUid>
99
- <OrgUid/>
100
- <txtName>VOR NAVAID</txtName>
101
- <codeType>DVOR</codeType>
88
+ <OrgUid region="LF">
89
+ <txtName>FRANCE</txtName>
90
+ </OrgUid>
91
+ <codeType>VOR</codeType>
102
92
  <valFreq>111</valFreq>
103
93
  <uomFreq>MHZ</uomFreq>
104
94
  <codeTypeNorth>TRUE</codeTypeNorth>
105
95
  <codeDatum>WGE</codeDatum>
106
- <valElev>500</valElev>
107
- <uomDistVer>FT</uomDistVer>
108
- <Vtt>
109
- <codeWorkHr>H24</codeWorkHr>
110
- </Vtt>
111
- <txtRmk>vor navaid</txtRmk>
112
96
  </Vor>
113
97
  END
114
98
  end
115
99
  end
116
100
  end
117
101
 
118
- context "complete VOR/DME" do
102
+ context "VOR/DME" do
119
103
  subject do
120
104
  AIXM::Factory.vor.tap do |vor|
121
105
  vor.name = "VOR/DME NAVAID"
@@ -124,33 +108,26 @@ describe AIXM::Feature::NavigationalAid::VOR do
124
108
  end
125
109
  end
126
110
 
127
- let :digests do
128
- [subject.to_digest, subject.dme.to_digest]
129
- end
130
-
131
111
  describe :kind do
132
112
  it "must return class/type combo" do
133
113
  subject.kind.must_equal "VOR:VOR"
134
114
  end
135
115
  end
136
116
 
137
- describe :to_digest do
138
- it "must return digest of payload" do
139
- subject.to_digest.must_equal 604205702
140
- end
141
- end
142
-
143
- describe :to_aixm do
144
- it "must build correct XML of VOR with OFM extension" do
145
- subject.to_aixm(:ofm).must_equal <<~END
117
+ describe :to_xml do
118
+ it "builds correct OFMX" do
119
+ AIXM.ofmx!
120
+ subject.to_xml.must_equal <<~END
146
121
  <!-- NavigationalAid: [VOR:VOR] VOR/DME NAVAID -->
147
- <Vor>
148
- <VorUid mid="#{digests.first}" newEntity="true">
122
+ <Vor source="LF|GEN|0.0 FACTORY|0|0">
123
+ <VorUid region="LF">
149
124
  <codeId>VVV</codeId>
150
125
  <geoLat>47.85916667N</geoLat>
151
- <geoLong>7.56000000E</geoLong>
126
+ <geoLong>007.56000000E</geoLong>
152
127
  </VorUid>
153
- <OrgUid/>
128
+ <OrgUid region="LF">
129
+ <txtName>FRANCE</txtName>
130
+ </OrgUid>
154
131
  <txtName>VOR/DME NAVAID</txtName>
155
132
  <codeType>VOR</codeType>
156
133
  <valFreq>111</valFreq>
@@ -166,16 +143,18 @@ describe AIXM::Feature::NavigationalAid::VOR do
166
143
  </Vor>
167
144
  <!-- NavigationalAid: [DME] VOR/DME NAVAID -->
168
145
  <Dme>
169
- <DmeUid mid="#{digests.last}" newEntity="true">
146
+ <DmeUid region="LF">
170
147
  <codeId>VVV</codeId>
171
148
  <geoLat>47.85916667N</geoLat>
172
- <geoLong>7.56000000E</geoLong>
149
+ <geoLong>007.56000000E</geoLong>
173
150
  </DmeUid>
174
- <OrgUid/>
175
- <VorUid mid="#{digests.first}" newEntity="true">
151
+ <OrgUid region="LF">
152
+ <txtName>FRANCE</txtName>
153
+ </OrgUid>
154
+ <VorUid region="LF">
176
155
  <codeId>VVV</codeId>
177
156
  <geoLat>47.85916667N</geoLat>
178
- <geoLong>7.56000000E</geoLong>
157
+ <geoLong>007.56000000E</geoLong>
179
158
  </VorUid>
180
159
  <txtName>VOR/DME NAVAID</txtName>
181
160
  <codeChannel>84X</codeChannel>
@@ -201,33 +180,26 @@ describe AIXM::Feature::NavigationalAid::VOR do
201
180
  end
202
181
  end
203
182
 
204
- let :digests do
205
- [subject.to_digest, subject.tacan.to_digest]
206
- end
207
-
208
183
  describe :kind do
209
184
  it "must return class/type combo" do
210
185
  subject.kind.must_equal "VOR:VOR"
211
186
  end
212
187
  end
213
188
 
214
- describe :to_digest do
215
- it "must return digest of payload" do
216
- subject.to_digest.must_equal 339710051
217
- end
218
- end
219
-
220
- describe :to_aixm do
221
- it "must build correct XML of VOR with OFM extension" do
222
- subject.to_aixm(:ofm).must_equal <<~END
189
+ describe :to_xml do
190
+ it "builds correct OFMX" do
191
+ AIXM.ofmx!
192
+ subject.to_xml.must_equal <<~END
223
193
  <!-- NavigationalAid: [VOR:VOR] VORTAC NAVAID -->
224
- <Vor>
225
- <VorUid mid="#{digests.first}" newEntity="true">
194
+ <Vor source="LF|GEN|0.0 FACTORY|0|0">
195
+ <VorUid region="LF">
226
196
  <codeId>VVV</codeId>
227
197
  <geoLat>47.85916667N</geoLat>
228
- <geoLong>7.56000000E</geoLong>
198
+ <geoLong>007.56000000E</geoLong>
229
199
  </VorUid>
230
- <OrgUid/>
200
+ <OrgUid region="LF">
201
+ <txtName>FRANCE</txtName>
202
+ </OrgUid>
231
203
  <txtName>VORTAC NAVAID</txtName>
232
204
  <codeType>VOR</codeType>
233
205
  <valFreq>111</valFreq>
@@ -243,16 +215,18 @@ describe AIXM::Feature::NavigationalAid::VOR do
243
215
  </Vor>
244
216
  <!-- NavigationalAid: [TACAN] VORTAC NAVAID -->
245
217
  <Tcn>
246
- <TcnUid mid="#{digests.last}" newEntity="true">
218
+ <TcnUid region="LF">
247
219
  <codeId>VVV</codeId>
248
220
  <geoLat>47.85916667N</geoLat>
249
- <geoLong>7.56000000E</geoLong>
221
+ <geoLong>007.56000000E</geoLong>
250
222
  </TcnUid>
251
- <OrgUid/>
252
- <VorUid mid="#{digests.first}" newEntity="true">
223
+ <OrgUid region="LF">
224
+ <txtName>FRANCE</txtName>
225
+ </OrgUid>
226
+ <VorUid region="LF">
253
227
  <codeId>VVV</codeId>
254
228
  <geoLat>47.85916667N</geoLat>
255
- <geoLong>7.56000000E</geoLong>
229
+ <geoLong>007.56000000E</geoLong>
256
230
  </VorUid>
257
231
  <txtName>VORTAC NAVAID</txtName>
258
232
  <codeChannel>54X</codeChannel>
@@ -0,0 +1,52 @@
1
+ require_relative '../../../spec_helper'
2
+
3
+ describe AIXM::Feature::NavigationalAid do
4
+ subject do
5
+ AIXM::Feature::NavigationalAid.send(:new,
6
+ organisation: AIXM::Factory.organisation,
7
+ id: 'XXX',
8
+ xy: AIXM::Factory.xy
9
+ )
10
+ end
11
+
12
+ describe :id= do
13
+ it "fails on invalid values" do
14
+ -> { subject.id = 123 }.must_raise ArgumentError
15
+ end
16
+
17
+ it "upcases value" do
18
+ subject.tap { |s| s.id = 'lol' }.id.must_equal 'LOL'
19
+ end
20
+ end
21
+
22
+ describe :name= do
23
+ it "fails on invalid values" do
24
+ [:foobar, 123].wont_be_written_to subject, :name
25
+ end
26
+
27
+ it "accepts nil value" do
28
+ [nil].must_be_written_to subject, :name
29
+ end
30
+
31
+ it "upcases and transcodes value" do
32
+ subject.tap { |s| s.name = 'löl' }.name.must_equal 'LOEL'
33
+ end
34
+ end
35
+
36
+ describe :xy= do
37
+ macro :xy
38
+ end
39
+
40
+ describe :z= do
41
+ macro :z_qnh
42
+
43
+ it "accepts nil value" do
44
+ [nil].must_be_written_to subject, :z
45
+ end
46
+ end
47
+
48
+ describe :remarks= do
49
+ macro :remarks
50
+ end
51
+
52
+ end