public void WhenRaisingTransponderDataReady_GivenFlightIsWithinAirspace_CreateFlightTrack_ThatASubscriperCanReceive(string rawData, string expTag, int expLat, int expLong, int expAlt) { // ARRANGE var transponderData = new List <string>(); transponderData.Add(rawData); _fakeMonitoredAirspace.HasPositionWithinBoundaries(Arg.Any <Position>()).Returns(true); IFlightTrack persistedArgs = null; _sut.EnteredAirspace += (sender, e) => { persistedArgs = e.FlightTrack; }; //ACT _fakeTransponder.TransponderDataReady += Raise.EventWith(_fakeTransponder, new RawTransponderDataEventArgs(transponderData)); // ASSERT Assert.That(persistedArgs.Tag, Is.Not.Null); Assert.That(persistedArgs.NavigationCourse, Is.EqualTo(double.NaN)); Assert.That(persistedArgs.Velocity, Is.EqualTo(0)); Assert.That(persistedArgs.LatestTime, Is.Not.EqualTo(DateTime.MinValue)); Assert.That(persistedArgs.Tag, Is.EqualTo(expTag)); Assert.That(persistedArgs.Position.Altitude, Is.EqualTo(expAlt)); Assert.That(persistedArgs.Position.Latitude, Is.EqualTo(expLat)); Assert.That(persistedArgs.Position.Longitude, Is.EqualTo(expLong)); }
private void UpdateFlightTracks(object sender, FlightRecordEventArgs e) { var flightUpdate = e.FlightRecord; if (_monitoredAirspace.HasPositionWithinBoundaries(flightUpdate.Position)) { IFlightTrack updatedTrack; var existingTrack = _tracks.Any(t => t.Tag == flightUpdate.Tag); if (existingTrack) // already in list { updatedTrack = _tracks.SortRecordByTag(flightUpdate); _view.AddToRenderWithColor(updatedTrack.ToString(), ConsoleColor.Yellow); } else { updatedTrack = _tracks.SortRecordByTag(flightUpdate); var args = new FlightTrackEventArgs(updatedTrack); EnteredAirspace?.Invoke(this, args); } _handler.DetectCollision(_tracks); _handler.DetectCollision(_tracks); } else { var leftAirspaceTrack = _tracks.FirstOrDefault(t => t.Tag == flightUpdate.Tag); var leftairspacetrue = _tracks.Any(t => t.Tag == flightUpdate.Tag); if (leftairspacetrue) // in list { var args = new FlightTrackEventArgs(leftAirspaceTrack); LeftAirspace?.Invoke(this, args); _tracks.Remove(leftAirspaceTrack); } } }
public void Call_DetectCollision() { // Arrange _fakeMonitoredAirspace.HasPositionWithinBoundaries(Arg.Any <Position>()).Returns(true); // Act var record = new FlightRecord() { Tag = "test flight", Position = new Position(20000, 20000, 19000), Timestamp = DateTime.MinValue }; _fakeFlight.FlightRecordReceived += Raise.EventWith(_fakeFlight, new FlightRecordEventArgs(record)); // Assert _fakeSeperation.Received().DetectCollision(Arg.Any <ICollection <IFlightTrack> >()); }