require_relative '../../../spec_helper'
describe AIXM::Component::Helipad do
subject do
AIXM::Factory.airport.helipads.first
end
describe :name= do
it "fails on invalid values" do
[nil, :foobar, 123].wont_be_written_to subject, :name
end
it "upcases and transcodes valid values" do
subject.tap { |s| s.name = 'h1' }.name.must_equal 'H1'
end
end
describe :xy= do
macro :xy
it "fails on nil value" do
[nil].wont_be_written_to subject, :xy
end
end
describe :z= do
macro :z_qnh
end
describe :length= do
it "fails on invalid values" do
[:foobar, 0, 1, AIXM.d(0, :m)].wont_be_written_to subject, :length
end
it "accepts nil value" do
[nil].must_be_written_to subject, :length
end
end
describe :width= do
it "fails on invalid values" do
[:foobar, 0, 1, AIXM.d(0, :m)].wont_be_written_to subject, :width
end
it "accepts nil value" do
[nil].must_be_written_to subject, :width
end
end
describe :marking= do
macro :marking
end
describe :fato= do
it "fails on invalid values" do
[:foobar, 0].wont_be_written_to subject, :fato
end
it "accepts valid values" do
[nil, AIXM::Factory.fato].must_be_written_to subject, :fato
end
end
describe :helicopter_class= do
it "fails on invalid values" do
[:foobar, 123].wont_be_written_to subject, :helicopter_class
end
it "accepts nil value" do
[nil].must_be_written_to subject, :helicopter_class
end
it "looks up valid values" do
subject.tap { |s| s.helicopter_class = 1 }.helicopter_class.must_equal :'1'
subject.tap { |s| s.helicopter_class = :OTHER }.helicopter_class.must_equal :other
end
end
describe :status= do
it "fails on invalid values" do
[:foobar, 123].wont_be_written_to subject, :status
end
it "accepts nil value" do
[nil].must_be_written_to subject, :status
end
it "looks up valid values" do
subject.tap { |s| s.status = :closed }.status.must_equal :closed
subject.tap { |s| s.status = :SPOWER }.status.must_equal :secondary_power
end
end
describe :remarks= do
macro :remarks
end
describe :xml= do
it "builds correct complete OFMX" do
AIXM.ofmx!
subject.to_xml.must_equal <<~END
LFNT
H1
LFNT
H1
43.99915000N
004.75154444E
WGE
141
FT
20
20
M
CONC
PAVED
FAIR
30
F
A
W
U
Cracks near the center
1500
KG
0.5
MPA
8
T
1
Continuous white lines
OTHER
Authorizaton by AD operator required
LFNT
H1
AIM
omnidirectional
LIM
GRN
lighting remarks
END
end
it "builds correct minimal OFMX" do
AIXM.ofmx!
%i(z length width helicopter_class marking status remarks).each { |a| subject.send(:"#{a}=", nil) }
%i(composition preparation condition pcn siwl_weight siwl_tire_pressure auw_weight remarks).each { |a| subject.surface.send(:"#{a}=", nil) }
subject.instance_eval { @lightings.clear }
subject.to_xml.must_equal <<~END
LFNT
H1
LFNT
H1
43.99915000N
004.75154444E
WGE
END
end
end
end