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);
        }
示例#4
0
 public LandingReport GetReport(LandingParameters p)
 {
     return(Calculator.LandingReport(new CalculatorData()
     {
         Parameters = p,
         Table = (AirbusPerfTable)controllerData.PerfTable.Item
     }));
 }
示例#5
0
 public MainViewModel(IAudioService audioService)
 {
     _audioService           = audioService;
     ActiveLandingParameters = new LandingParameters();
     Altitude      = ActiveLandingParameters.Altitude;
     Velocity      = ActiveLandingParameters.Velocity;
     Fuel          = ActiveLandingParameters.Fuel;
     Thrust        = ActiveLandingParameters.Thrust;
     FuelRemaining = Constants.StartingFuel;
     IsActive      = false;
 }
 public MainViewModel(MainPage activityPage)
 {
     ActivityPage            = activityPage;
     ActiveLandingParameters = new LandingParameters();
     Altitude      = ActiveLandingParameters.Altitude;
     Velocity      = ActiveLandingParameters.Velocity;
     Fuel          = ActiveLandingParameters.Fuel;
     Thrust        = ActiveLandingParameters.Thrust;
     FuelRemaining = CoreConstants.StartingFuel;
     IsActive      = false;
 }
        public async void ResetLanding()
        {
            Helpers.AudioHelper.ToggleEngine();

            await Task.Delay(500);

            ActiveLandingParameters = new LandingParameters();

            Altitude      = 5000.0;
            Velocity      = 0.0;
            Fuel          = 1000.0;
            FuelRemaining = 1000.0;
            Thrust        = 0.0;
            DescentRate   = 0.0;
            Throttle      = 0.0;
        }
        private void AssertMainResult(LandingReport report,
                                      LandingParameters para, BoeingPerfTable table)
        {
            var entry = report.SelectedBrks;
            var calc  = new LandingCalculator(table, para);

            string brake       = table.BrakesAvailable(para.SurfaceCondition)[para.BrakeIndex];
            double rwyRequired = calc.DistanceRequiredMeter();

            Assert.IsTrue(entry.BrkSetting == brake);
            Assert.AreEqual(rwyRequired, entry.ActualDisMeter, 0.5);

            double disRemain = para.RwyLengthMeter - rwyRequired;

            Assert.AreEqual(disRemain, entry.DisRemainMeter, 0.5);
        }
示例#9
0
        // Returns whether continue to calculate.
        private bool CheckWeight(LandingParameters para)
        {
            if (para.WeightKG > ac.MaxTOWtKg || para.WeightKG < ac.OewKg)
            {
                var result = parentControl.ShowDialog(
                    "Landing weight is not within valid range. Continue to calculate?",
                    MsgBoxIcon.Warning,
                    "",
                    DefaultButton.Button2,
                    "Yes", "No");

                return(result == MsgBoxResult.Button1);
            }

            return(true);
        }
示例#10
0
        // Returns whether continue to calculate.
        private bool CheckWeight(LandingParameters para)
        {
            var ac = aircrafts.Find(regComboBox.Text).Config;

            if (para.WeightKG > ac.MaxTOWtKg || para.WeightKG < ac.OewKg)
            {
                var result = this.ShowDialog(
                    "Landing weight is not within valid range. Continue to calculate?",
                    MsgBoxIcon.Warning,
                    "",
                    DefaultButton.Button2,
                    "Yes", "No");

                return(result == MsgBoxResult.Button1);
            }

            return(true);
        }
        private void AssertOtherResult(LandingReport report,
                                       LandingParameters para, BoeingPerfTable table)
        {
            var calc = new LandingCalculator(table, para);

            foreach (var i in report.AllSettings)
            {
                int brakeIndex = Array.FindIndex(
                    table.BrakesAvailable(para.SurfaceCondition),
                    x => x == i.BrkSetting);

                PropertySetter.Set(para, "BrakeIndex", brakeIndex);

                double rwyRequired = calc.DistanceRequiredMeter();
                Assert.AreEqual(rwyRequired, i.ActualDisMeter, 0.5);

                double disRemain = para.RwyLengthMeter - rwyRequired;
                Assert.AreEqual(disRemain, i.DisRemainMeter, 0.5);
            }
        }
示例#12
0
        public LandingReport GetReport(LandingParameters p)
        {
            var item = (BoeingPerfTable)controllerData.PerfTable.Item;

            return(new LandingReportGenerator(item, p).GetReport());
        }