public void DistanceRequiredTest() { string text = new TestData().AllText; var doc = XDocument.Parse(text); var table = new PerfDataLoader().GetItem(doc); var para = new LandingParameters( 55000.0, 0.0, 1000.0, -10.0, -1.0, 15.0, 1013.25, 5.0, ReverserOption.NoRev, SurfaceCondition.Good, 0, 0); var dis = new LandingCalculator(table, para) .DistanceRequiredMeter(); double expectedDistance = 1200.0 + 85.0 + 30.0 + 205.0 + 30.0 + 1.98 / 10.0 * 30.0 + 100.0 * 0.5 + 145.0; Assert.AreEqual(expectedDistance, dis, 1E-7); }
public void WhenRwyIsTooShortShouldThrowException() { string text = new TestData().AllText; var doc = XDocument.Parse(text); var table = new PerfDataLoader().GetItem(doc); var para = new LandingParameters( 55000.0, 0.0, // Too short runway 1000.0, -10.0, -1.0, 15.0, 1013.0, 5.0, ReverserOption.NoRev, SurfaceCondition.Good, 0, 0); Assert.Throws <RunwayTooShortException>(() => { new LandingReportGenerator(table, para).GetReport(); }); }
public void GetReportTest() { string text = new TestData().AllText; var doc = XDocument.Parse(text); var table = new PerfDataLoader().GetItem(doc); var para = new LandingParameters( 55000.0, 3000.0, 1000.0, -10.0, -1.0, 15.0, 1013.0, 5.0, ReverserOption.NoRev, SurfaceCondition.Good, 0, 0); var report = new LandingReportGenerator(table, para).GetReport(); AssertMainResult(report, para, table); AssertOtherResult(report, para, table); }
/// <summary> /// Load all xml in the landing performance data folder. /// Files in wrong format are ignored. /// If two files have the same profile name, the rules are: /// (1) The file in custom folder shadows file in default folder. /// (2) Only one of them is loaded. /// </summary> public IEnumerable <PerfTable> Load() { var tables = new Dictionary <string, PerfTable>(); var files = Directory.GetFiles(CustomFolderPath).Concat( Directory.GetFiles(DefaultFolderPath)); foreach (var i in files) { try { var table = new PerfDataLoader().ReadFromXml(i); tables.Add(table.Entry.ProfileName, table); } catch { } } return(tables.Select(kv => kv.Value)); }
public void ReadTableTest() { var data = new TestData(); var allTables = new PerfDataLoader().ReadTable(XDocument.Parse(data.PerfXml).Root); Assert.AreEqual(1, allTables.Flaps.Count); var table = allTables.Tables[0]; Assert.AreEqual(500.0, table.PacksOffDry, delta); Assert.AreEqual(500.0, table.PacksOffWet, delta); Assert.AreEqual(1700.0, table.PacksOffClimb, delta); Assert.AreEqual(0.0, table.AIEngDry, delta); Assert.AreEqual(0.0, table.AIEngWet, delta); Assert.AreEqual(0.0, table.AIEngClimb, delta); Assert.AreEqual(2050.0, table.AIBothDry, delta); Assert.AreEqual(2200.0, table.AIBothWet, delta); Assert.AreEqual(2100.0, table.AIBothClimb, delta); Assert.IsTrue(table.Flaps == "5"); Assert.IsTrue(table.AltnRatingAvail); Assert.AreEqual(2, table.AlternateThrustTables.Count); Assert.IsTrue(table.AlternateThrustTables[0].Equals( data.AltnThrustTables[0], delta)); Assert.IsTrue(table.AlternateThrustTables[1].Equals( data.AltnThrustTables[1], delta)); Assert.IsTrue(table.ThrustRatings.SequenceEqual(new[] { "TO", "TO1", "TO2" })); Assert.IsTrue(table.SlopeCorrDry.Equals(data.SlopeCorrDry, delta)); Assert.IsTrue(table.SlopeCorrWet.Equals(data.SlopeCorrWet, delta)); Assert.IsTrue(table.WindCorrDry.Equals(data.WindCorrDry, delta)); Assert.IsTrue(table.WindCorrWet.Equals(data.WindCorrWet, delta)); Assert.IsTrue(table.WeightTableDry.Equals(data.WtTableDry, delta)); Assert.IsTrue(table.WeightTableWet.Equals(data.WtTableWet, delta)); Assert.IsTrue(table.ClimbLimitWt.Equals(data.ClimbLimTable, delta)); }
public void GetItemTest() { string text = new TestData().AllText; var doc = XDocument.Parse(text); var table = new PerfDataLoader().GetItem(doc); Assert.AreEqual(table.WeightRef, 50000.0, delta); Assert.AreEqual(table.WeightStep, 5000.0, delta); Assert.IsTrue(table.BrakesAvailable(SurfaceCondition.Dry).SequenceEqual( "MAX MANUAL", "MAX AUTO")); Assert.IsTrue(table.BrakesAvailable(SurfaceCondition.Good).SequenceEqual( "MAX MANUAL")); Assert.IsTrue(table.Flaps.SequenceEqual("30", "40")); Assert.IsTrue(table.Reversers.SequenceEqual("Both", "One Rev", "No Rev")); Assert.IsTrue(table.DataDry.Equals(new TableDry( new[] { new[] { new[] { 750, 55, -40, 15, 15, -30, 95, 5, -5, 15, -15, 55, 10, 25.0 }, new[] { 955, 60, -60, 20, 20, -35, 125, 0, 0, 20, -20, 95, 0, 0.0 } }, new[] { new[] { 750, 55, -40, 15, 15, -30, 100, 10, -5, 15, -15, 60, 10, 25.0 }, new[] { 930, 55, -55, 20, 20, -35, 125, 0, 0, 20, -20, 95, 0, 0.0 } } }), delta)); Assert.IsTrue(table.DataWet.Equals(new TableWet( new[] { new[] { new[] { new[] { 1200, 85, -80, 30, 30, -55, 205, 30, -20, 30, -25, 100, 65, 145.0 } }, new[] { new[] { 1595, 130, -120, 50, 50, -85, 335, 70, -50, 45, -40, 130, 175, 430.0 } }, new[] { new[] { 2045, 185, -170, 65, 65, -130, 525, 170, -105, 55, -50, 150, 370, 1030.0 } } }, new[] { new[] { new[] { 1185, 85, -70, 30, 30, -55, 205, 30, -20, 30, -25, 100, 65, 140.0 } }, new[] { new[] { 1565, 130, -120, 45, 45, -85, 330, 70, -50, 45, -40, 130, 165, 405.0 } }, new[] { new[] { 2005, 180, -165, 60, 60, -130, 525, 165, -105, 55, -50, 150, 345, 945.0 } } } }), delta)); }