public void ProximityGadgetAircraftJson_ToModel_Returns_The_Closest_Aircraft() { var worksheet = new ExcelWorksheetData(TestContext); var originLatitude = worksheet.NDouble("GadgetLat"); var originLongitude = worksheet.NDouble("GadgetLng"); var aircraft = CreateAircraft(2); for (int i = 1; i <= 2; ++i) { aircraft[i - 1].Callsign = i.ToString(); aircraft[i - 1].Latitude = worksheet.NFloat(String.Format("AC{0}Lat", i)); aircraft[i - 1].Longitude = worksheet.NFloat(String.Format("AC{0}Lng", i)); } var model = ProximityGadgetAircraftJson.ToModel(aircraft, originLatitude, originLongitude); var closestCallsign = worksheet.String("Closest"); if (closestCallsign == null) { Assert.IsNull(model.ClosestAircraft); } else { Assert.AreEqual(closestCallsign, model.ClosestAircraft.Callsign); } }
[Route("ClosestAircraft.json")] // pre-version 3 route public void GetClosest(double?lat = null, double?lng = null) { ProximityGadgetAircraftJson result = null; var context = Context; var config = Factory.ResolveSingleton <ISharedConfiguration>().Get(); if (!context.IsInternet || config.InternetClientSettings.AllowInternetProximityGadgets) { var feedManager = Factory.ResolveSingleton <IFeedManager>(); var feed = feedManager.GetByUniqueId(config.GoogleMapSettings.ClosestAircraftReceiverId, ignoreInvisibleFeeds: true); if (feed?.AircraftList != null) { var aircraftList = feed.AircraftList.TakeSnapshot(out var unused1, out var unused2); result = ProximityGadgetAircraftJson.ToModel(aircraftList, lat, lng); } if (result == null) { result = new ProximityGadgetAircraftJson() { WarningMessage = "Receiver is offline", }; } } _WebApiResponder.ReturnJsonObject(context, result, null, null, MimeType.Text); }
public void ProximityGadgetAircraftJson_Constructor_Initialises_To_Known_State_And_Properties_Work() { var json = new ProximityGadgetAircraftJson(); TestUtilities.TestProperty(json, "ClosestAircraft", null, new ProximityGadgetClosestAircraftJson()); TestUtilities.TestProperty(json, "WarningMessage", null, "Abc"); Assert.AreEqual(0, json.EmergencyAircraft.Count); }
/// <summary> /// See base class. /// </summary> /// <param name="server"></param> /// <param name="args"></param> /// <returns></returns> protected override bool DoHandleRequest(Interface.WebServer.IWebServer server, Interface.WebServer.RequestReceivedEventArgs args) { bool result = false; if ((!args.IsInternetRequest || _InternetClientCanRequestClosestAircraft) && args.PathAndFile.Equals("/ClosestAircraft.json", StringComparison.OrdinalIgnoreCase)) { result = true; var latitude = QueryNDouble(args, "lat"); var longitude = QueryNDouble(args, "lng"); var json = new ProximityGadgetAircraftJson(); if (latitude == null || longitude == null) { json.WarningMessage = "Position not supplied"; } else { long timeStamp, dataVersion; var aircraftList = BaseStationAircraftList.TakeSnapshot(out timeStamp, out dataVersion); IAircraft closestAircraft = null; double? closestDistance = null; foreach (var aircraft in aircraftList) { double?distance = null; if (aircraft.Latitude != null && aircraft.Longitude != null) { distance = GreatCircleMaths.Distance(latitude, longitude, aircraft.Latitude, aircraft.Longitude); if (distance != null && closestAircraft == null || distance < closestDistance) { closestAircraft = aircraft; closestDistance = distance; } } if (aircraft.Emergency == true) { json.EmergencyAircraft.Add(CreateProximityGadgetClosestAircraftJson(aircraft, distance, latitude, longitude)); } } if (closestAircraft != null) { var closestJsonAircraft = CreateProximityGadgetClosestAircraftJson(closestAircraft, closestDistance, latitude, longitude); json.ClosestAircraft = closestJsonAircraft; } } Responder.SendJson(args.Response, json, null); args.Classification = ContentClassification.Json; } return(result); }
public void ProximityGadgetAircraftJson_ToModel_Returns_List_Of_Aircraft_Transmitting_An_Emergency_Squawk() { var aircraft = CreateAircraft(2); var model = ProximityGadgetAircraftJson.ToModel(aircraft, 1, 1); Assert.AreEqual(0, model.EmergencyAircraft.Count); aircraft[0].Emergency = true; aircraft[0].Callsign = "TEST"; model = ProximityGadgetAircraftJson.ToModel(aircraft, 1, 1); Assert.AreEqual(1, model.EmergencyAircraft.Count); Assert.AreEqual("TEST", model.EmergencyAircraft[0].Callsign); aircraft[1].Emergency = true; model = ProximityGadgetAircraftJson.ToModel(aircraft, 1, 1); Assert.AreEqual(2, model.EmergencyAircraft.Count); }
public void ProximityGadgetAircraftJson_ToModel_Warns_If_Location_Not_Specified() { var warning = "Position not supplied"; var aircraft = CreateAircraft(1); aircraft[0].Latitude = 1; aircraft[0].Longitude = 1; var model = ProximityGadgetAircraftJson.ToModel(aircraft, null, null); Assert.AreEqual(warning, model.WarningMessage); model = ProximityGadgetAircraftJson.ToModel(aircraft, 1, null); Assert.AreEqual(warning, model.WarningMessage); model = ProximityGadgetAircraftJson.ToModel(aircraft, null, 1); Assert.AreEqual(warning, model.WarningMessage); model = ProximityGadgetAircraftJson.ToModel(aircraft, 1, 1); Assert.AreEqual(null, model.WarningMessage); }
[Route("ClosestAircraft.json")] // pre-version 3 route public HttpResponseMessage GetClosest(double?lat = null, double?lng = null) { ProximityGadgetAircraftJson result = null; var context = PipelineContext; var config = Factory.Singleton.ResolveSingleton <ISharedConfiguration>().Get(); if (!context.Request.IsInternet || config.InternetClientSettings.AllowInternetProximityGadgets) { var feedManager = Factory.Singleton.ResolveSingleton <IFeedManager>(); var feed = feedManager.GetByUniqueId(config.GoogleMapSettings.ClosestAircraftReceiverId, ignoreInvisibleFeeds: true); if (feed?.AircraftList != null) { long unused1, unused2; var aircraftList = feed.AircraftList.TakeSnapshot(out unused1, out unused2); result = ProximityGadgetAircraftJson.ToModel(aircraftList, lat, lng); } if (result == null) { result = new ProximityGadgetAircraftJson() { WarningMessage = "Receiver is offline", }; } } var json = JsonConvert.SerializeObject(result); var response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new StringContent(json, Encoding.UTF8, MimeType.Text); return(response); }
public void ProximityGadgetAircraftJson_ToModel_Returns_Null_If_Passed_Null() { Assert.IsNull(ProximityGadgetAircraftJson.ToModel(null, 1.0, 1.0)); }