public void HandleFlightsInAirspace_RaisesSeparationEvent_TracksAreCorrect() { bool defaultHandler = false; _uut.SeperationEvent += (sender, args) => defaultHandler = true; Track conflictingTrackOne = new Track() { Tag = "CT1" }; Track conflictingTrackTwo = new Track() { Tag = "CT2" }; List <Track> tracks = new List <Track>(); tracks.Add(conflictingTrackOne); tracks.Add(conflictingTrackTwo); for (int i = 0; i < 10; i++) { tracks.Add(new Track()); } _fakeCollisionAnalyzer.AnalyzeCollision(Arg.Is(conflictingTrackOne), Arg.Is(conflictingTrackTwo)).Returns(true); FlightMovementEventArgs arg = new FlightMovementEventArgs(tracks, tracks); _fakeFlightManagement.FlightDataReady += Raise.EventWith <FlightMovementEventArgs>(arg); _fakeSeparationStringBuilder.Received(1).BuildSeperationNote(conflictingTrackOne, conflictingTrackTwo); }
public void AnalyzeCourse_AnalyzesCourseForMatchingTrack_CourseIsCorrect(int numberOfFlightsInNewestTracks, double x1, double x2, double y1, double y2, double expected) { List <Track> OldestTracks = new List <Track>(); List <Track> NewestTracks = new List <Track>(); Track trackToBeCompared = new Track() { Tag = "ASE2018", XCoordinate = x2, YCoordinate = y2 }; NewestTracks.Add(trackToBeCompared); for (int i = 0; i < numberOfFlightsInNewestTracks - 1; i++) { Track track = new Track() { Tag = "FlightNo " + i }; NewestTracks.Add(track); } Track trackOne = new Track() { Tag = "ASE2018", XCoordinate = x1, YCoordinate = y1 }; OldestTracks.Add(trackOne); FlightMovementEventArgs e = new FlightMovementEventArgs(OldestTracks, NewestTracks); _flightAnalyzer.HandleFlightsInAirspace(this, e); Assert.That(NewestTracks.Find(x => x.Tag == trackOne.Tag).CompassCourse, Is.EqualTo(expected).Within(0.5)); }
public void HandleFlightsInAirspace_AnalyzesVelocityForOneMatchingTrack_VelocityIsCorrect(int numberOfFlightsInNewestTracks, int secondsBetweenTimestamps, double firstXCoordinate, double secondXCoordinate, double firstYCoordinate, double secondYCoordinate, double expectedVelocity) { List <Track> OldestTracks = new List <Track>(); List <Track> NewestTracks = new List <Track>(); DateTime firstDateTime = DateTime.Now; DateTime secondDateTime = firstDateTime.AddSeconds(secondsBetweenTimestamps); Track trackToBeCompared = new Track() { Tag = "ASE2018", TimeStamp = secondDateTime, XCoordinate = firstXCoordinate, YCoordinate = firstYCoordinate }; NewestTracks.Add(trackToBeCompared); for (int i = 0; i < numberOfFlightsInNewestTracks - 1; i++) { Track track = new Track() { Tag = "FlightNo " + i }; NewestTracks.Add(track); } Track trackOne = new Track() { Tag = "ASE2018", TimeStamp = firstDateTime, XCoordinate = secondXCoordinate, YCoordinate = secondYCoordinate }; OldestTracks.Add(trackOne); FlightMovementEventArgs e = new FlightMovementEventArgs(OldestTracks, NewestTracks); _flightAnalyzer.HandleFlightsInAirspace(this, e); Assert.That(NewestTracks.Find(x => x.Tag == trackOne.Tag).HorizontalVelocity, Is.EqualTo(expectedVelocity).Within(0.5)); }
public void HandleFlightsInAirspace(object sender, FlightMovementEventArgs arg) { _courseAnalyzer.AnalyzeCourse(arg.OldestTracks, arg.NewestTracks); _velocityAnalyzer.AnalyzeVelocity(arg.OldestTracks, arg.NewestTracks); foreach (var track in arg.NewestTracks) { var Handler = TracksAnalyzedEvent; Handler?.Invoke(this, new TrackLogEventArgs(track.ToString())); } }
public void AnalyzeVelocity_AnalyzesVelocityForTwoTracks_EachVelocityIsCorrect(int numberOfFlightsInNewestTracks, int secondsBetween1, int secondsBetween2, int firstXCoordinate, int secondXCoordinate, int firstYCoordinate, int secondYCoordinate, double expectedVelocity1, double expectedVelocity2) { //Arrange List <Track> OldestTracks = new List <Track>(); List <Track> NewestTracks = new List <Track>(); DateTime firstDateTime = DateTime.Now; DateTime secondDateTime1 = firstDateTime.AddSeconds(secondsBetween1); DateTime secondDateTime2 = firstDateTime.AddSeconds(secondsBetween2); Track trackToBeCompared1 = new Track() { Tag = "ASE2018", TimeStamp = secondDateTime1, XCoordinate = firstXCoordinate, YCoordinate = firstYCoordinate }; Track trackToBeCompared2 = new Track() { Tag = "ASE2017", TimeStamp = secondDateTime2, XCoordinate = firstXCoordinate, YCoordinate = firstYCoordinate }; NewestTracks.Add(trackToBeCompared1); NewestTracks.Add(trackToBeCompared2); for (int i = 0; i < numberOfFlightsInNewestTracks - 2; i++) { Track track = new Track() { Tag = "FlightNo " + i }; NewestTracks.Add(track); } Track trackOne = new Track() { Tag = "ASE2018", TimeStamp = firstDateTime, XCoordinate = secondXCoordinate, YCoordinate = secondYCoordinate }; Track trackTwo = new Track() { Tag = "ASE2017", TimeStamp = firstDateTime, XCoordinate = secondXCoordinate, YCoordinate = secondYCoordinate }; OldestTracks.Add(trackOne); OldestTracks.Add(trackTwo); FlightMovementEventArgs e = new FlightMovementEventArgs(OldestTracks, NewestTracks); _flightAnalyzer.HandleFlightsInAirspace(this, e); Assert.That(NewestTracks.Find(x => x.Tag == trackOne.Tag).HorizontalVelocity, Is.EqualTo(expectedVelocity1).Within(0.5)); Assert.That(NewestTracks.Find(x => x.Tag == trackTwo.Tag).HorizontalVelocity, Is.EqualTo(expectedVelocity2).Within(0.5)); }
public void HandleFlightsInAirspace(object sender, FlightMovementEventArgs arg) { for (int i = 0; i < arg.NewestTracks.Count - 1; i++) { for (int j = i + 1; j < arg.NewestTracks.Count; j++) { if (_collisionAnalyzer.AnalyzeCollision(arg.NewestTracks[i], arg.NewestTracks[j])) { var Handler = SeperationEvent; Handler?.Invoke(this, new SeparationEventArgs( _separationStringBuilder.BuildSeperationNote(arg.NewestTracks[i], arg.NewestTracks[j]))); } } } }
public void HandleFlightsInAirspace_NoConflictingFlights_NoEventRaises() { int raises = 0; _uut.SeperationEvent += (sender, args) => raises++; List <Track> tracks = new List <Track>(); for (int i = 0; i < 10; i++) { tracks.Add(new Track()); } _fakeCollisionAnalyzer.AnalyzeCollision(Arg.Any <Track>(), Arg.Any <Track>()).Returns(false); FlightMovementEventArgs arg = new FlightMovementEventArgs(tracks, tracks); _fakeFlightManagement.FlightDataReady += Raise.EventWith <FlightMovementEventArgs>(arg); _fakeSeparationStringBuilder.DidNotReceive().BuildSeperationNote(Arg.Any <Track>(), Arg.Any <Track>()); }
public void HandleFlightsInAirspace_Dododod_RecieveEqualAmount(int NumberOfExpectedRaises) { List <Track> Oldlist = new List <Track>(); List <Track> Newlist = new List <Track>(); for (int i = 0; i < NumberOfExpectedRaises; i++) { Newlist.Add(new Track()); } FlightMovementEventArgs arg = new FlightMovementEventArgs(Oldlist, Newlist); int raises = 0; _uut.TracksAnalyzedEvent += (sender, args) => raises++; _fakelFlightManagement.FlightDataReady += Raise.EventWith(arg); //Assert Assert.That(raises, Is.EqualTo(NumberOfExpectedRaises)); }
public void HandleFlightsInAirspace_RaisesSeparationEvent_EventIsRaisedCorrectNumberOfTimes(int numberOfFlightsConflicting, int numberOfRaises) { int raises = 0; _uut.SeperationEvent += (sender, args) => raises++; List <Track> tracks = new List <Track>(); for (int i = 0; i < numberOfFlightsConflicting; i++) { tracks.Add(new Track()); } _fakeCollisionAnalyzer.AnalyzeCollision(Arg.Any <Track>(), Arg.Any <Track>()).Returns(true); _fakeSeparationStringBuilder.BuildSeperationNote(Arg.Any <Track>(), Arg.Any <Track>()).Returns(""); FlightMovementEventArgs arg = new FlightMovementEventArgs(tracks, tracks); _fakeFlightManagement.FlightDataReady += Raise.EventWith <FlightMovementEventArgs>(arg); Assert.That(raises, Is.EqualTo(numberOfRaises)); }