require_relative '../../../../spec_helper' describe AIXM::Feature::NavigationalAid::TACAN do subject do AIXM::Factory.tacan end describe :channel= do it "fails on invalid values" do [nil, :foobar, 123, '0X', '127Y', '12Z'].wont_be_written_to subject, :channel end end describe :ghost_f do it "must be derived from the channel" do subject.tap { |s| s.channel = '1X' }.ghost_f.freq.must_equal 134.4 subject.tap { |s| s.channel = '12Y' }.ghost_f.freq.must_equal 135.55 subject.tap { |s| s.channel = '16Y' }.ghost_f.freq.must_equal 135.95 subject.tap { |s| s.channel = '17X' }.ghost_f.freq.must_equal 108 subject.tap { |s| s.channel = '30X' }.ghost_f.freq.must_equal 109.3 subject.tap { |s| s.channel = '59Y' }.ghost_f.freq.must_equal 112.25 subject.tap { |s| s.channel = '60X' }.ghost_f.freq.must_equal 133.3 subject.tap { |s| s.channel = '64Y' }.ghost_f.freq.must_equal 133.75 subject.tap { |s| s.channel = '69Y' }.ghost_f.freq.must_equal 134.25 subject.tap { |s| s.channel = '70X' }.ghost_f.freq.must_equal 112.30 subject.tap { |s| s.channel = '100X' }.ghost_f.freq.must_equal 115.3 subject.tap { |s| s.channel = '126Y' }.ghost_f.freq.must_equal 117.95 end end describe :kind do it "must return class/type combo" do subject.kind.must_equal "TACAN" end end describe :to_xml do it "builds correct complete OFMX" do AIXM.ofmx! subject.to_xml.must_equal <<~END TTT 47.85916667N 007.56000000E FRANCE TACAN NAVAID 29X 109.2 MHZ WGE 500 FT H24 tacan navaid END end it "builds correct minimal OFMX" do AIXM.ofmx! subject.name = subject.z = subject.timetable = subject.remarks = nil subject.to_xml.must_equal <<~END TTT 47.85916667N 007.56000000E FRANCE 29X 109.2 MHZ WGE END end end end