require_relative '../../../spec_helper'
describe AIXM::Component::Layer do
context "only required attributes set" do
subject do
AIXM.layer(vertical_limits: AIXM::Factory.vertical_limits)
end
describe :initialize do
it "sets defaults" do
_(subject).wont_be :selective?
end
end
describe :class= do
it "fails on invalid values" do
_([:X, 'X']).wont_be_written_to subject, :class
end
it "symbolizes and upcases valid values" do
_(subject.tap { |s| s.class = 'c' }.class).must_equal :C
end
end
describe :location_indicator= do
it "fails on invalid values" do
_([:foobar, 123, 'XXX', 'XXXXX']).wont_be_written_to subject, :location_indicator
end
it "accepts nil value" do
_([nil]).must_be_written_to subject, :location_indicator
end
it "upcases value" do
_(subject.tap { |s| s.location_indicator = 'lfbb' }.location_indicator).must_equal 'LFBB'
end
end
describe :vertical_limits= do
it "fails on invalid values" do
_([nil, :foobar, 123]).wont_be_written_to subject, :vertical_limits
end
end
describe :activity= do
it "fails on invalid values" do
_([:foobar, 123]).wont_be_written_to subject, :activity
end
it "looks up valid values" do
_(subject.tap { |s| s.activity = :aerodrome_traffic }.activity).must_equal :aerodrome_traffic
_(subject.tap { |s| s.activity = :GLIDER }.activity).must_equal :gliding
end
end
describe :timetable= do
macro :timetable
end
describe :selective= do
it "fails on invalid values" do
_([nil, 'N', 0]).wont_be_written_to subject, :selective
end
end
describe :remarks= do
macro :remarks
end
describe :to_xml do
it "builds correct OFMX" do
AIXM.ofmx!
_(subject.to_xml).must_equal <<~END
STD
65
FL
STD
45
FL
ALT
6000
FT
HEI
3000
FT
N
END
end
it "builds correct AIXM" do
_(subject.to_xml).wont_match(//)
_(subject.to_xml).wont_match(//)
_(subject.to_xml).wont_match(//)
end
end
end
context "required and optional attributes set" do
subject do
AIXM::Factory.layer
end
it "builds correct OFMX" do
AIXM.ofmx!
_(subject.to_xml).must_equal <<~END
C
XXXX
TFC-AD
STD
65
FL
STD
45
FL
ALT
6000
FT
HEI
3000
FT
H24
Y
airspace layer
END
end
it "builds correct AIXM" do
_(subject.to_xml).wont_match(//)
end
end
end