public void TestForeflightSending() { FlightData data = DEFUALT_DATA; string GPS_STRING = "XGPSMSFS 2020,5.5000,4.4000,1.1,3.30,2.2"; string ATTITUDE_STRING = "XATTMSFS 2020,8.8,6.6,7.7"; var mock = new Mock <ForeFlightSender>(MockBehavior.Default, data, new UdpClient()) { CallBase = true }; ForeFlightSender sender = mock.Object; mock.Protected().SetupGet <FlightData>("FlightData").Returns(data); mock.Protected().Setup("Send", ItExpr.IsAny <string>()) .Callback((string msg) => { }); IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), ForeFlightSender.DEFAULT_PORT); sender.EndPoint = endpoint; sender.Start(); System.Threading.Thread.Sleep(5100); sender.Stop(); System.Threading.Thread.Sleep(1100); mock.Protected().Verify("Send", Times.Exactly(5), ItExpr.Is <string>(s => GPS_STRING.Equals(s))); // giving some leway on Attitude sending just in case of lag. mock.Protected().Verify("Send", Times.AtLeast(31), ItExpr.Is <string>(s => ATTITUDE_STRING.Equals(s))); mock.Protected().Verify("Send", Times.AtMost(32), ItExpr.Is <string>(s => ATTITUDE_STRING.Equals(s))); }
public void TestForeflightNoEndpoint() { FlightData fd = null; ForeFlightSender sender = new ForeFlightSender(ref fd, null); sender.Start(); }
public void TestForeflightSendingSkipInvalid(FlightData data) { string GPS_STRING = "XGPSMSFS 2020,5.5000,4.4000,1.1,3.30,2.2"; string ATTITUDE_STRING = "XATTMSFS 2020,8.8,6.6,7.7"; var mock = new Mock <ForeFlightSender>(MockBehavior.Default, data, new UdpClient()) { CallBase = true }; ForeFlightSender sender = mock.Object; mock.Protected().SetupGet <FlightData>("FlightData").Returns(data); mock.Protected().Setup("Send", ItExpr.IsAny <string>()) .Callback((string msg) => { }); IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), ForeFlightSender.DEFAULT_PORT); sender.EndPoint = endpoint; sender.Start(); System.Threading.Thread.Sleep(1100); sender.Stop(); mock.Protected().Verify("Send", Times.Never(), ItExpr.Is <string>(s => GPS_STRING.Equals(s))); mock.Protected().Verify("Send", Times.Never(), ItExpr.Is <string>(s => ATTITUDE_STRING.Equals(s))); }
private void buttonForeflight_Click(object sender, EventArgs e) { if (null == foreFlightSender) { IPAddress foreflightIPAddress = null; ForeFlightNetworkOption networkOption = cbForeflightConnectType.Items[cbForeflightConnectType.SelectedIndex] as ForeFlightNetworkOption; switch (networkOption.NetworkType) { case ForeFlightNetworkOption.NetworkTypes.DirectIPv4: foreflightIPAddress = IPAddress.Parse(settings.ForeFlightDirectIp); break; case ForeFlightNetworkOption.NetworkTypes.IPv4NetworkBroadcast: case ForeFlightNetworkOption.NetworkTypes.IPv6LinkLocal: foreflightIPAddress = networkOption.Address; break; } foreFlightSender = new ForeFlightSender(ref flightData, new UdpClient( networkOption.NetworkType == NetworkTypes.IPv6LinkLocal ? AddressFamily.InterNetworkV6 : AddressFamily.InterNetwork )); foreFlightSender.OnForeFlightSenderError += ForeFlightSender_OnForeFlightSenderError; IPEndPoint endpoint = new IPEndPoint( foreflightIPAddress, ForeFlightSender.DEFAULT_PORT); foreFlightSender.EndPoint = endpoint; foreFlightSender.Start(); SetForeflightControls(ConnectorState.Connected); labelIncompleteData.Visible = !ForeFlightSender.VerifyCompleteFlightData(flightData) && null != foreFlightSender; labelIncompleteData.Invalidate(); } else { foreFlightSender.Stop(); foreFlightSender = null; GC.Collect(); SetForeflightControls(ConnectorState.Disconnected); } }
private void FlightData_OnFlightDataUpdate(object sender, FlightData.FlightDataUpdatedEventArgs e) { if (0 != (e.Field | FlightDataField.Altitude)) { UpdateValueTextBox(tbAltitude, flightData.AltitudeFt, 2, " ft"); } if (0 != (e.Field | FlightDataField.GroundSpeed)) { UpdateValueTextBox(tbGroundSpeed, flightData.GroundSpeedKt, 1, " knots"); } if (0 != (e.Field | FlightDataField.GroundTrack)) { UpdateValueTextBox(tbGroundTrack, flightData.GroundTrackDegrees, 1, "°"); } if (0 != (e.Field | FlightDataField.TrueHeading)) { UpdateValueTextBox(tbHeading, flightData.TrueHeadingDegrees, 1, "°"); } if (0 != (e.Field | FlightDataField.Latitude)) { UpdateValueTextBox(tbLatitude, flightData.Latitude, 4, "°"); } if (0 != (e.Field | FlightDataField.Longitude)) { UpdateValueTextBox(tbLongitude, flightData.Longitude, 4, "°"); } if (0 != (e.Field | FlightDataField.Pitch)) { UpdateValueTextBox(tbPitch, flightData.PitchDegrees, 2, "°"); } if (0 != (e.Field | FlightDataField.Roll)) { UpdateValueTextBox(tbRoll, flightData.RollDegrees, 2, "°"); } labelIncompleteData.Visible = !ForeFlightSender.VerifyCompleteFlightData(flightData) && null != foreFlightSender; labelIncompleteData.Invalidate(); }