public void Flight_D1908_20170408_Partial() { FlightContext fc = new FlightContext("6770"); int callbacks = 0; fc.OnRadarContact += (sender, args) => { Assert.AreEqual(null, ((FlightContext)sender).Flight.DepartureTime); Assert.AreEqual(false, ((FlightContext)sender).Flight.DepartureInfoFound); Assert.AreEqual(0, ((FlightContext)sender).Flight.DepartureHeading); callbacks++; }; fc.OnLanding += (sender, args) => { Assert.AreEqual(636272628474023926, ((FlightContext)sender).Flight.ArrivalTime?.Ticks); Assert.AreEqual(250, ((FlightContext)sender).Flight.ArrivalHeading); callbacks++; }; // These events should NOT be fired fc.OnTakeoff += (sender, args) => Assert.Fail(); fc.OnCompletedWithErrors += (sender, e) => Assert.Fail(); fc.Process(Common.ReadFlightPoints("2017-04-08_D-1908.csv").Skip(500)); Assert.AreEqual(2, callbacks); }
public async Task MinimalMemory_Flights_PH1387_20170419_20170421() { FlightContext fc = new FlightContext("2842", options => { }); int pass = 0; fc.OnTakeoff += (sender, args) => { switch (pass) { case 0: Assert.AreEqual(636281989825441178, ((FlightContext)sender).Flight.DepartureTime?.Ticks); Assert.AreEqual(355, ((FlightContext)sender).Flight.DepartureHeading); break; case 1: Assert.AreEqual(636283687551363359, ((FlightContext)sender).Flight.DepartureTime?.Ticks); Assert.AreEqual(355, ((FlightContext)sender).Flight.DepartureHeading); break; case 2: Assert.AreEqual(636283906924363860, ((FlightContext)sender).Flight.DepartureTime?.Ticks); Assert.AreEqual(21, ((FlightContext)sender).Flight.DepartureHeading); break; default: break; } }; fc.OnLanding += (sender, args) => { if (pass == 0) { Assert.AreEqual(636282163561655897, ((FlightContext)sender).Flight.ArrivalTime?.Ticks); Assert.AreEqual(336, ((FlightContext)sender).Flight.ArrivalHeading); } if (pass == 1) { Assert.AreEqual(636283891197427348, ((FlightContext)sender).Flight.ArrivalTime?.Ticks); Assert.AreEqual(333, ((FlightContext)sender).Flight.ArrivalHeading); } pass++; }; fc.Process(Common.ReadFlightPoints("2017-04-19_2017-04-21_PH-1387.csv")); }
public async Task Flight_D1908_20170408() { var fc = new FlightContext("6770"); var countdownEvent = new CountdownEvent(3); fc.OnTakeoff += (sender, args) => { countdownEvent.Signal(); Assert.AreEqual(636272591685778931, ((FlightContext)sender).Flight.DepartureTime?.Ticks); Assert.AreEqual(new Point(4.35683333333333, 51.4516666666667, 30), ((FlightContext)sender).Flight.DepartureLocation); }; fc.OnLaunchCompleted += (sender, args) => { countdownEvent.Signal(); Assert.AreEqual(LaunchMethods.Winch, ((FlightContext)sender).Flight.LaunchMethod); Assert.AreEqual(636272591835295201, ((FlightContext)sender).Flight.LaunchFinished?.Ticks); Assert.AreEqual(244, ((FlightContext)sender).Flight.DepartureHeading); }; fc.OnLanding += (sender, args) => { countdownEvent.Signal(); Assert.AreEqual(636272628474023926, ((FlightContext)sender).Flight.ArrivalTime?.Ticks); Assert.AreEqual(250, ((FlightContext)sender).Flight.ArrivalHeading); Assert.AreEqual(new Point(4.35583333333333, 51.451, 39), ((FlightContext)sender).Flight.ArrivalLocation); }; // These events should NOT be fired fc.OnRadarContact += (sender, e) => Assert.Fail(); fc.OnCompletedWithErrors += (sender, e) => Assert.Fail(); var points = Common.ReadFlightPoints("2017-04-08_D-1908.csv"); fc.Process(points); countdownEvent.Wait(1000); Assert.IsTrue(countdownEvent.CurrentCount == 0); }
public void Flight_PH1387_20170421() { FlightContext fc = new FlightContext("2842"); /* * In this case the tool also detects a start after the previous flight. Therefore we have to add a switch * statement to check in which phase we are. */ int pass = 0; fc.OnTakeoff += (sender, args) => { if (pass == 0) { Assert.AreEqual(636283687551363359, ((FlightContext)sender).Flight.DepartureTime?.Ticks); Assert.AreEqual(355, ((FlightContext)sender).Flight.DepartureHeading); } else if (pass == 1) { Assert.AreEqual(636283906924363860, ((FlightContext)sender).Flight.DepartureTime?.Ticks); Assert.AreEqual(21, ((FlightContext)sender).Flight.DepartureHeading); } pass++; }; fc.OnLaunchCompleted += (sender, args) => { // If the tow would have been known, or it would have been known this aircraft is an engineless glider, it would have been obvious this self launch was a tow. Assert.AreEqual(LaunchMethods.Self, ((FlightContext)sender).Flight.LaunchMethod); Assert.AreEqual(636283689536727050, ((FlightContext)sender).Flight.LaunchFinished?.Ticks); pass++; }; fc.OnLanding += (sender, args) => { Assert.AreEqual(636283891197427348, ((FlightContext)sender).Flight.ArrivalTime?.Ticks); Assert.AreEqual(338, ((FlightContext)sender).Flight.ArrivalHeading); }; fc.Process(Common.ReadFlightPoints("2017-04-21_PH-1387.csv")); }
/* * While this test is pretty well similar to the previous test, some of the data used (speed / * heading) is extracted from the lat/long points. Therefore, results may not be 100% the same. * * For now the departure and arrival times seems to be the same, while there is a small * discrepancy in the observed heading for takeoff and landing (+- 10 degrees). * * This might be due to either of those reasons: * - FLARM units transmit their heading based on an internall compass (?) * - I'm using a rhumb line for heading calculations. However I don't think this makes up for a * 10 degree discrepancy... * * * FAILING TEST: * * The main reason to blame this failing test is to the way FLARM collects and sentds it's data. * It turns out the GPS fix is not updated nearly enough. Because of this the position is the same, * and therefore when calculating the difference in position we'll get '0', because of which the algorithm * thinks the aircraft has stopped. * * There are several possible solutions: * * 1. Ignore points which are quicker than x time period in succession. * 2. Determine the maximum G load for a specific operation, and ignore anything out of bounds. * * So long as this hasn't been solved we're disabling this test method. * */ //[TestMethod] public async Task Flight_D1908_20170408_Subset() { FlightContext fc = new FlightContext("6770"); int callbacks = 0; fc.OnTakeoff += (sender, args) => { Assert.AreEqual(636272591485655057, ((FlightContext)sender).Flight.DepartureTime?.Ticks); Assert.AreEqual(195, ((FlightContext)sender).Flight.DepartureHeading); callbacks++; }; fc.OnLaunchCompleted += (sender, args) => { Assert.AreEqual(LaunchMethods.Winch, ((FlightContext)sender).Flight.LaunchMethod); Assert.AreEqual(636272591994430449, ((FlightContext)sender).Flight.LaunchFinished?.Ticks); callbacks++; }; fc.OnLanding += (sender, args) => { Assert.AreEqual(636272591764373758, ((FlightContext)sender).Flight.ArrivalTime?.Ticks); Assert.AreEqual(244, ((FlightContext)sender).Flight.ArrivalHeading); callbacks++; }; // These events should NOT be fired fc.OnRadarContact += (sender, e) => Assert.Fail(); fc.OnCompletedWithErrors += (sender, e) => Assert.Fail(); fc.Process(Common.ReadFlightPoints("2017-04-08_D-1908.csv", true)); Assert.AreEqual(3, callbacks); }
public void Flights_PH1384_20170425() { FlightContext fc = new FlightContext("5657"); int pass = 0; int callbacks = 0; fc.OnTakeoff += (sender, args) => { switch (pass) { case 0: Assert.AreEqual(636287344501749071, ((FlightContext)sender).Flight.DepartureTime?.Ticks); Assert.AreEqual(246, ((FlightContext)sender).Flight.DepartureHeading); break; case 1: Assert.AreEqual(636287368213105015, ((FlightContext)sender).Flight.DepartureTime?.Ticks); Assert.AreEqual(246, ((FlightContext)sender).Flight.DepartureHeading); break; case 2: Assert.AreEqual(636287382263573133, ((FlightContext)sender).Flight.DepartureTime?.Ticks); Assert.AreEqual(244, ((FlightContext)sender).Flight.DepartureHeading); break; case 3: Assert.AreEqual(636287407314361125, ((FlightContext)sender).Flight.DepartureTime?.Ticks); Assert.AreEqual(245, ((FlightContext)sender).Flight.DepartureHeading); break; default: break; } callbacks++; }; fc.OnLanding += (sender, args) => { switch (pass) { case 0: Assert.AreEqual(636287362871888759, ((FlightContext)sender).Flight.ArrivalTime?.Ticks); Assert.AreEqual(249, ((FlightContext)sender).Flight.ArrivalHeading); break; case 1: Assert.AreEqual(636287372913847335, ((FlightContext)sender).Flight.ArrivalTime?.Ticks); Assert.AreEqual(250, ((FlightContext)sender).Flight.ArrivalHeading); break; case 2: Assert.AreEqual(636287393734216787, ((FlightContext)sender).Flight.ArrivalTime?.Ticks); Assert.AreEqual(250, ((FlightContext)sender).Flight.ArrivalHeading); break; case 3: Assert.AreEqual(636287429323052452, ((FlightContext)sender).Flight.ArrivalTime?.Ticks); Assert.AreEqual(248, ((FlightContext)sender).Flight.ArrivalHeading); break; default: break; } pass++; callbacks++; }; fc.Process(Common.ReadFlightPoints("2017-04-25_PH-1384.csv")); Assert.AreEqual(4, pass); Assert.AreEqual(8, callbacks); }
public async Task Flights_PH1387_20170419_20170421() { FlightContext fc = new FlightContext("2842"); int pass = 0; fc.OnTakeoff += (sender, args) => { switch (pass) { case 0: Assert.AreEqual(636281989825441178, ((FlightContext)sender).Flight.DepartureTime?.Ticks); Assert.AreEqual(355, ((FlightContext)sender).Flight.DepartureHeading); break; case 1: Assert.AreEqual(636283687551363359, ((FlightContext)sender).Flight.DepartureTime?.Ticks); Assert.AreEqual(355, ((FlightContext)sender).Flight.DepartureHeading); break; default: Assert.Fail(); break; } }; //fc.OnLaunchCompleted += (sender, args) => //{ // switch (pass) // { // case 0: // Assert.AreEqual(LaunchMethods.Self, ((Experimental.FlightContext)sender).Flight.LaunchMethod); // Assert.AreEqual(636281993021809484, ((Experimental.FlightContext)sender).Flight.LaunchFinished?.Ticks); // break; // case 1: // Assert.AreEqual(LaunchMethods.Self, ((Experimental.FlightContext)sender).Flight.LaunchMethod); // Assert.AreEqual(636283689536727050, ((Experimental.FlightContext)sender).Flight.LaunchFinished?.Ticks); // break; // default: // Assert.Fail(); // break; // } //}; fc.OnLanding += (sender, args) => { switch (pass) { case 0: Assert.AreEqual(636282163561655897, ((FlightContext)sender).Flight.ArrivalTime?.Ticks); Assert.AreEqual(339, ((FlightContext)sender).Flight.ArrivalHeading); break; case 1: Assert.AreEqual(636283891197427348, ((FlightContext)sender).Flight.ArrivalTime?.Ticks); Assert.AreEqual(338, ((FlightContext)sender).Flight.ArrivalHeading); break; default: Assert.Fail(); break; } pass++; }; fc.Process(Common.ReadFlightPoints("2017-04-19_2017-04-21_PH-1387.csv")); }