Example #1
0
        public void Setup()
        {
            _trackObjects1 = new List <TrackObject>();
            _trackObjects  = new List <TrackObject>();
            _trackObjects2 = new List <TrackObject>();
            list1          = new List <string> {
                "MAR123", "50000", "50000", "1000", "20151006213456789"
            };
            trackObject           = new TrackObject(list1);
            _receivedTrackObjects = new List <TrackObject>();
            _trackObjects.Add(trackObject);
            _transponderReceiver      = Substitute.For <ITransponderReceiver>();
            _transponderParsing       = Substitute.For <ITransponderParsing>();
            _trackingValidation       = Substitute.For <ITrackingValidation>();
            _dateFormatter            = Substitute.For <IDateFormatter>();
            _trackUpdater             = Substitute.For <ITrackUpdater>();
            _velocityCourseCalculator = Substitute.For <IVelocityCourseCalculator>();
            _separationChecker        = Substitute.For <ISeparationChecker>();
            _print       = Substitute.For <IPrint>();
            _objectifier = Substitute.For <ITrackListEvent>();
            _uut         = new ATMSystem(_objectifier, _trackUpdater, _velocityCourseCalculator, _separationChecker, _print);
            _trackObjectDataEventArgs = new TrackListEventArgs(_trackObjects);

            _objectifier.TrackListReady += (sender, TrackListEventArgs) =>
            {
                _receivedTrackObjects = TrackListEventArgs.TrackObjects;
            };
        }
Example #2
0
        public void OnTrackListReady(object sender, TrackListEventArgs e)
        {
            _newTrackObjects = e.TrackObjects;
            _newTrackObjects = _trackUpdater.updateTracks(_newTrackObjects, _oldTrackObjects);

            _oldTrackObjects.Clear();

            foreach (var newTrackObject in _newTrackObjects)
            {
                _oldTrackObjects.Add(newTrackObject);
            }

            Console.Clear();

            foreach (var oldTrackObject in _oldTrackObjects)
            {
                _print.PrintString(oldTrackObject.ToString());
            }

            for (int i = 0; i < _oldTrackObjects.Count - 1; i++)
            {
                for (int j = i + 1; j < _oldTrackObjects.Count; j++)
                {
                    if (_separationChecker.IsInOtherAirSpace(_oldTrackObjects[i], _oldTrackObjects[j]))
                    {
                        _print.PrintString(_oldTrackObjects[i].Tag + " and " + _oldTrackObjects[j].Tag + "are breaking separation rules!");
                        _separationChecker.LogSeparationEvent(_oldTrackObjects[i], _oldTrackObjects[j]);
                    }
                }
            }
        }
Example #3
0
        public void OnNewValidation(object sender, TrackListEventArgs e)
        {
            List <ITrack> newInAirspaceList      = new List <ITrack>();
            List <ITrack> notAnymoreAirspaceList = new List <ITrack>();
            List <ITrack> updateAirspaceList     = new List <ITrack>();

            foreach (var track in e.Tracks)
            {
                var isInAirspace      = _airspaceValidator.Validate(track, Airspace);      // checks if tracks are in airspace. false -> remove track
                var hasBeenInAirspace = _trackAirspaceValidator.Validate(track, Airspace); // check if track already us tracked
                if (HasBeenAndIsStillInAirspace(hasBeenInAirspace, isInAirspace))
                {
                    updateAirspaceList.Add(track);// has been and still is
                }
                else if (HasNotBeenButIsInAirspace(hasBeenInAirspace, isInAirspace))
                {
                    newInAirspaceList.Add(track);// has not been, but is now
                }
                else if (HasBeenInAirspaceButIsNotAnymore(hasBeenInAirspace, isInAirspace))
                {
                    notAnymoreAirspaceList.Add(track);// has been there but is not anymore
                }
            }

            var validateEventArgs = new ValidateEventArgs(newInAirspaceList,
                                                          notAnymoreAirspaceList,
                                                          updateAirspaceList);

            OnValidationComplete(validateEventArgs);
        }
Example #4
0
 private void OnTrackRemoved(TrackListEventArgs e)
 {
     if (TrackRemoved != null)
     {
         TrackRemoved(this, e);
     }
     OnTrackListChanged();
 }
        public void OnNewValidation_ValidateTracksReceived_NewInAirspace_EventHandlerInvoked()// airspace starts empty
        {
            var tracksWithTags = FakeTrackFactory.GetMultipleTracksWithTags(10);

            //This is the shared eventargs between Interpreter and Validator
            var trackListEventArgs = new TrackListEventArgs(tracksWithTags);

            // by invoke, all "subscribers" are notified - in this case it is the ValidateTransponderData
            _trackListEvent.TrackListEventHandler += Raise.EventWith(_trackListEvent, trackListEventArgs);


            CollectionAssert.AreEqual(tracksWithTags, _validationCompleteEventArgs.NewInAirspace);
        }
        public void setup()
        {
            TrackListArgs = null;
            _uut          = new TransponderDataInterpreter();

            handler = Substitute.For <ITransponderReceiver>();
            //subscribe handler interpreter event
            _uut.subscribe(handler);


            //setup event listener
            _uut.TrackListEventHandler += (o, args) => { TrackListArgs = args; };
        }
Example #7
0
        public void OnValidationComplete_Invoked()
        {
            var invoked = false;

            var trackList = FakeTrackFactory.GetMultipleTracksWithTags(1);

            _trackListEventArgs = new TrackListEventArgs(trackList);

            _uutValidateTransponderData.ValidationCompleteEventHandler += (sender, args) => invoked = true;

            _trackListEvent.TrackListEventHandler += Raise.EventWith(this, _trackListEventArgs);

            Assert.That(invoked);
        }
        public void ValidateTransponderData_EventHandlerInvoked()
        {
            var invoked        = false;
            var tracksWithTags = FakeTrackFactory.GetMultipleTracksWithTags(10);

            //This is the shared eventargs between Interpreter and Validator
            var trackListEventArgs = new TrackListEventArgs(tracksWithTags);

            _trackListEvent.TrackListEventHandler += (sender, args) => invoked = true;

            // by invoke, all "subscribers" are notified - in this case it is the ValidateTransponderData
            _trackListEvent.TrackListEventHandler += Raise.EventWith(_trackListEvent, trackListEventArgs);

            Assert.True(invoked);
        }
        public void OnNewValidation_ValidateTracks_TrackAlreadyRegistered_EventHandlerInvoked()
        {
            var track1 = FakeTrackFactory.GetTrackWithTag("BCD123", 200, 300, 400);

            // pre-adds track to Airspace
            _validateTransponderData.Airspace.Trackables.Add(track1);

            // adds the same track to a list
            var tracksWithTags = new List <ITrack>()
            {
                track1
            };

            //This is the shared eventargs between Interpreter and Validator - now the TrackListEventArgs trackList also contains the same track
            var trackListEventArgs = new TrackListEventArgs(tracksWithTags);

            // by invoke, all "subscribers" are notified - in this case it is the ValidateTransponderData
            _trackListEvent.TrackListEventHandler += Raise.EventWith(_trackListEvent, trackListEventArgs);

            Assert.Contains(track1, _validationCompleteEventArgs.StillInAirspace);
        }
Example #10
0
        public void Setup()
        {
            list1 = new List <string> {
                "MAR123", "50000", "50000", "1000", "20151006213456000"
            };
            list2 = new List <string> {
                "MAR123", "49900", "49900", "1000", "20151006213457000"
            };
            trackObject1 = new TrackObject(list1);
            trackObject2 = new TrackObject(list2);
            tList1       = new List <TrackObject> {
                trackObject1
            };
            tList2 = new List <TrackObject> {
                trackObject2
            };
            returnList            = new List <TrackObject>();
            _receivedTrackObjects = new List <TrackObject>();
            trackObject           = new TrackObject(list1);
            _trackObjects         = new List <TrackObject>();
            _trackObjects.Add(trackObject);
            distance                  = new Distance();
            _transponderReceiver      = Substitute.For <ITransponderReceiver>();
            _transponderParsing       = new TransponderParsing();
            _trackingValidation       = new TrackingValidation();
            _dateFormatter            = new DateFormatter();
            _velocityCourseCalculator = new VelocityCourseCalculater(distance);
            _trackUpdater             = new TrackUpdater(_velocityCourseCalculator);
            _separationChecker        = new SeparationChecker(distance);
            _print       = Substitute.For <IPrint>();
            _objectifier = Substitute.For <ITrackListEvent>();
            _uut         = new ATMSystem(_objectifier, _trackUpdater, _velocityCourseCalculator, _separationChecker, _print);
            _trackObjectDataEventArgs = new TrackListEventArgs(_trackObjects);

            _objectifier.TrackListReady += (sender, TrackListEventArgs) =>
            {
                _receivedTrackObjects = TrackListEventArgs.TrackObjects;
            };
        }
        public void OnNewValidation_ValidateTracks_NotInAirspaceAnymore_EventHandlerInvoked()
        {
            var track1 = FakeTrackFactory.GetTrackWithTag("BCD123", 200, 300, 400);

            // pre-adds track to Airspace
            _validateTransponderData.Airspace.Trackables.Add(track1);

            // these coordinates are not in airspace
            track1.TrackPosition.XCoordinate = -10;
            track1.TrackPosition.YCoordinate = -20;
            track1.TrackPosition.ZCoordinate = -30;

            // adds the same track with updated coordinates to a list
            var tracksWithTags = new List <ITrack>()
            {
                track1
            };

            //This is the shared eventargs between Interpreter and Validator - now the TrackListEventArgs trackList also contains the same track
            var trackListEventArgs = new TrackListEventArgs(tracksWithTags);

            // by invoke, all "subscribers" are notified - in this case it is the ValidateTransponderData
            _trackListEvent.TrackListEventHandler += Raise.EventWith(_trackListEvent, trackListEventArgs);

            /*_validationCompleteEventArgs.NotInAirspaceButUsedToBe.ForEach(track => Console.WriteLine(track.Tag + " " +
             *                                                                                       track.TrackPosition.XCoordinate + " " +
             *                                                                                       track.TrackPosition.YCoordinate + " " +
             *                                                                                       track.TrackPosition.ZCoordinate));*/

            /*_validationCompleteEventArgs.NotInAirspaceButUsedToBe.ForEach(track => Console.WriteLine(track.Tag));
             * _validationCompleteEventArgs.NewInAirspace.ForEach(track => Console.WriteLine(track.Tag));
             * _validationCompleteEventArgs.StillInAirspace.ForEach(track => Console.WriteLine(track.Tag));*/


            Assert.Contains(track1, _validationCompleteEventArgs.NotInAirspaceButUsedToBe);
        }