Ejemplo n.º 1
0
        public void Initial_TrackStartCalcOneTrack_VelocityAndCourseIsCorrect(int t1x, int t1y, int t2x, int t2y, double result1, double result2)
        {
            Track prevtrack = new Track()
            {
                Tag       = "NIC222",
                X         = t1x,
                Y         = t1y,
                Altitude  = 5000,
                TimeStamp = DateTime.ParseExact("20151006213456789", "yyyyMMddHHmmssfff", CultureInfo.InvariantCulture)
            };


            Track newTrack = new Track()
            {
                Tag       = "NIC222",
                X         = t2x,
                Y         = t2y,
                Altitude  = 5000,
                TimeStamp = DateTime.ParseExact("20151006213458789", "yyyyMMddHHmmssfff", CultureInfo.InvariantCulture)
            };
            TrackStartCalEventArgs args = new TrackStartCalEventArgs(prevtrack, newTrack);

            _updater.TrackStartCal += Raise.EventWith(this, args);

            Assert.That(_calculatedTrack.Velocity, Is.EqualTo(result1));
            Assert.That(_calculatedTrack.Course, Is.EqualTo(result2));
        }
Ejemplo n.º 2
0
        private void EvalTrack(object o, TracksFilteredEventArgs args)
        {
            if (args.FilteredTracks.Count != 0 && UpdatedTracksList.Count == 0)
            {
                foreach (var track in args.FilteredTracks)
                {
                    UpdatedTracksList.Add(track);
                    TrackEntered?.Invoke(this, new TrackEnteredAirspaceEventArgs(new Event(EventsList, "Track Entered Airspace", track, DateTime.Now)));
                }
            }

            else if (args.FilteredTracks.Count != 0 && UpdatedTracksList.Count != 0)
            {
                foreach (var filteredTrack in args.FilteredTracks)
                {
                    var updatedTrack = UpdatedTracksList.Find(i => i.Tag == filteredTrack.Tag);

                    if (updatedTrack == null)
                    {
                        UpdatedTracksList.Add(filteredTrack);
                        TrackEntered?.Invoke(this, new TrackEnteredAirspaceEventArgs(new Event(EventsList, "Track Entered Airspace", filteredTrack, DateTime.Now)));
                    }
                    else
                    {
                        var newCalEvent = new TrackStartCalEventArgs(
                            UpdatedTracksList[UpdatedTracksList.IndexOf(updatedTrack)],
                            filteredTrack);
                        TrackStartCal?.Invoke(this, newCalEvent);
                        if (newCalEvent.CalculatedTrack != null)
                        {
                            filteredTrack.Course   = newCalEvent.CalculatedTrack.Course;
                            filteredTrack.Velocity = newCalEvent.CalculatedTrack.Velocity;
                            UpdatedTracksList[UpdatedTracksList.IndexOf(updatedTrack)] = filteredTrack;
                        }

                        SeperationChecker?.Invoke(this, new SeperationCheckerEventArgs(EventsList, UpdatedTracksList, filteredTrack));
                    }
                }
            }
            args.UpdatedTracks = UpdatedTracksList;
            TracksUpdated?.Invoke(this, new TracksUpdatedEventArgs(UpdatedTracksList, EventsList));
        }
Ejemplo n.º 3
0
 public void CalTrack(object o, TrackStartCalEventArgs args)
 {
     args.CalculatedTrack          = args.NewTrack;
     args.CalculatedTrack.Velocity = CalVelocity(args.PrevTrack, args.NewTrack);
     args.CalculatedTrack.Course   = CalCourse(args.PrevTrack, args.NewTrack);
 }