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; }; }
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]); } } } }
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); }
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; }; }
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); }
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); }