Exemple #1
0
        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));
        }
Exemple #3
0
        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()));
            }
        }
Exemple #5
0
        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])));
             }
         }
     }
 }
Exemple #7
0
        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>());
        }
Exemple #8
0
        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));
        }
Exemple #9
0
        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));
        }