public void OnSepCondition_TwoConditionsReceived_OutputsTwoConditions()
        {
            // Arrange
            // Create everything required for RendEventArgs
            var args          = new RendEventArgs();
            var listOfEvents  = new List <SepCondEventArgs>();
            var condEventArgs = new SepCondEventArgs();

            condEventArgs.TimeOfOccurrence = DateTime.Now;
            condEventArgs.Track1           = new Track("123456", 10, 100, 1000, DateTime.Now, 1000, 300);
            condEventArgs.Track2           = new Track("098765", 20, 30, 500, DateTime.Now, 4000, 200);
            listOfEvents.Add(condEventArgs);

            var condEventArgs2 = new SepCondEventArgs();

            condEventArgs2.TimeOfOccurrence = DateTime.MaxValue;
            condEventArgs2.Track1           = new Track("586038", 2364, 23456, 94865, DateTime.MaxValue, 1094, 224);
            condEventArgs2.Track2           = new Track("985736", 9586, 4956, 2345, DateTime.MinValue, 0, 0);
            listOfEvents.Add(condEventArgs2);

            args.TimeOfEvent             = DateTime.Now;
            args.ListOfCurrentConditions = listOfEvents;

            // Act - Raise the event
            stubSepCond.RendererWarning += Raise.EventWith(this, args);

            // Assert - mockWriter has received calls from uut
            mockWriter.Received(6).Write(Arg.Any <string>());
        }
        public void SepCondEvent_ReceivesOneEvent_Only1EventSent()
        {
            Track track1 = new Track("123456", 50000, 50000, 10000, DateTime.Now, 150, 90);
            Track track2 = new Track("654321", 49000, 50000, 10000, DateTime.Now, 150, 90);

            _tracklist = new List <Track>();
            _tracklist.Add(track1);
            _tracklist.Add(track2);
            _argsToSend = new ATMSEventArgs {
                Tracks = _tracklist
            };

            correctRendEventArgs = new RendEventArgs();
            var sepcondlistforrenderer = new List <SepCondEventArgs>();
            var newsepcond             = new SepCondEventArgs();

            newsepcond.Track1           = track1;
            newsepcond.Track2           = track2;
            newsepcond.TimeOfOccurrence = DateTime.Now;

            sepcondlistforrenderer.Add(newsepcond);
            correctRendEventArgs.ListOfCurrentConditions = sepcondlistforrenderer;
            correctRendEventArgs.TimeOfEvent             = DateTime.Now;

            _atms.DataReady += Raise.EventWith(_argsToSend);
            _inputoutput.Received(1).Write(Arg.Any <SepCondEventArgs>(), Arg.Any <string>());
        }
        public void SepCondToRendEvent_Receives1Event_Sends1Event()
        {
            Track track1 = new Track("123456", 50000, 50000, 10000, DateTime.Now, 150, 90);
            Track track2 = new Track("654321", 49000, 50000, 10000, DateTime.Now, 150, 90);

            _tracklist = new List <Track>();
            _tracklist.Add(track1);
            _tracklist.Add(track2);
            _argsToSend = new ATMSEventArgs {
                Tracks = _tracklist
            };

            correctRendEventArgs = new RendEventArgs();
            var sepcondlistforrenderer = new List <SepCondEventArgs>();
            var newsepcond             = new SepCondEventArgs();

            newsepcond.Track1           = track1;
            newsepcond.Track2           = track2;
            newsepcond.TimeOfOccurrence = DateTime.Now;

            sepcondlistforrenderer.Add(newsepcond);
            correctRendEventArgs.ListOfCurrentConditions = sepcondlistforrenderer;
            correctRendEventArgs.TimeOfEvent             = DateTime.Now;

            _atms.DataReady += Raise.EventWith(_argsToSend);

            Assert.That(_rendEventArgs.ListOfCurrentConditions[0].Track2,
                        Is.EqualTo(correctRendEventArgs.ListOfCurrentConditions[0].Track2));
        }
        public void OnSepCondition_OneConditionReceived_OutputsOneCondition()
        {
            // Arrange
            // Create everything required for RendEventArgs
            var args          = new RendEventArgs();
            var listOfEvents  = new List <SepCondEventArgs>();
            var condEventArgs = new SepCondEventArgs();

            condEventArgs.TimeOfOccurrence = DateTime.Now;
            condEventArgs.Track1           = new Track("123456", 10, 100, 1000, DateTime.Now, 1000, 300);
            condEventArgs.Track2           = new Track("098765", 20, 30, 500, DateTime.Now, 4000, 200);
            listOfEvents.Add(condEventArgs);

            args.TimeOfEvent             = condEventArgs.TimeOfOccurrence;
            args.ListOfCurrentConditions = listOfEvents;

            // Act - Raise the event
            stubSepCond.RendererWarning += Raise.EventWith(this, args);

            // Assert - mockWriter has received calls from uut
            mockWriter.Received(3).Write(Arg.Any <string>());
        }
        public void Setup()
        {
            _argsReceived = null;

            // Creation of all the required classes

            _writer      = Substitute.For <IWriter>();
            _inputoutput = Substitute.For <IInputOutput>();

            _atms = Substitute.For <IAirTrafficManagementSystem>();

            sepcond = new SeparationCondition(_atms);
            _log    = new NormalLogger("testfil", sepcond, _inputoutput);

            // Arguments that sepcond sends to Renderer when it makes an event
            _rendEventArgs = new RendEventArgs();
            var sepcondlist = new List <SepCondEventArgs>();

            sepcondlist.Add(_sepCondEventArgs);
            _rendEventArgs.ListOfCurrentConditions = sepcondlist;
            _rendEventArgs.TimeOfEvent             = DateTime.Now;


            _atms.DataReady += (o, args) =>
            {
                _argsReceived = args;
            };

            sepcond.WarningEvent += (o, args2) =>
            {
                _sepCondEventArgs = args2;
            };

            sepcond.RendererWarning += (o, args3) =>
            {
                _rendEventArgs = args3;
            };
        }