Esempio n. 1
0
 /// <summary>
 /// Заверешние полёта. Объект вернулся в исходной положение. Происходит отписка от событий и удаления.
 /// </summary>
 private void FinishFly()
 {
     AirTrafficController.RemovePlaneInList(this);
     EventAfterFinishFly?.Invoke();
     EventAfterFinishFly.RemoveAllListeners();
     _pool.Return();
 }
        static void Main(string[] args)
        {
            var positionCalculator = new PositionCalculator();

            // Using the real transponder data receiver
            var receiver = TransponderReceiverFactory.CreateTransponderDataReceiver();

            // Dependency injection with the real TDR
            var formatter = new Formatter(receiver);

            var speed      = new SpeedCalculator();
            var position   = new PositionCalculator();
            var clear      = new ClearConsole();
            var render     = new RenderData(clear);
            var writer     = new LogWriter();
            var log        = new Log(writer);
            var seperation = new SeperationCalculator(log);
            var system     = new AirTrafficController(formatter, seperation, render, position, speed, clear);

            // Let the real TDR execute in the background
            while (true)
            {
                Thread.Sleep(1000);
            }
        }
Esempio n. 3
0
        public void Equals_WhenTwoSameInstancesAreCreated_ThenInstancesAreEqual()
        {
            // arrange
            AirTrafficControllerBuilder builder = AirTrafficControllerBuilder.Create()
                                                  .WithAdministrativeVersion(AdministrativeRating.Observer)
                                                  .WithATIS("atis")
                                                  .WithATISTime(null)
                                                  .WithCallsign("LZKZ_CTR")
                                                  .WithClientRating(1)
                                                  .WithConnectionTime(DateTime.Now)
                                                  .WithFacilityType(FacilityType.Observer)
                                                  .WithFrequency("123.33")
                                                  .WithLocation(null)
                                                  .WithName("name")
                                                  .WithProtocol("protocol")
                                                  .WithRating(ATCRating.SeniorController)
                                                  .WithServer("server")
                                                  .WithSoftwareName("IVAC")
                                                  .WithSoftwareVersion("1.2.3")
                                                  .WithVID("123456")
                                                  .WithVisualRange(200);

            AirTrafficController instance0 = builder.Build();
            AirTrafficController instance1 = builder.Build();

            // act
            bool result = Equals(instance0, instance1);

            // assert
            Assert.That(instance0, Is.Not.Null);
            Assert.That(instance1, Is.Not.Null);
            Assert.That(ReferenceEquals(instance0, instance1), Is.Not.True);
            Assert.That(result, Is.True);
        }
        public void SetUp()
        {
            _conditionViewer   = Substitute.For <IConditionViewer>();
            _seperationChecker = Substitute.For <ISeperationChecker>();
            _dataCalculator    = Substitute.For <IDataCalculator>();

            _uut = new AirTrafficController(_dataCalculator);
        }
Esempio n. 5
0
        private static void Main()
        {
            Console.CursorVisible = false;
            var tos = new Tos(TransponderReceiverFactory.CreateTransponderDataReceiver());
            var atm = new AirTrafficController(new CollisionDetector(), new TrackStorage(), new AirSpace(), new ConsoleView(new ConsoleOutput()), new FileLogger());

            tos.Attach(atm);

            Console.ReadLine();
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            var receiver       = TransponderReceiverFactory.CreateTransponderDataReceiver();
            var trackReciever  = new TrackReciever(receiver);
            var dataCalculator = new DataCalculator(trackReciever);
            var controller     = new AirTrafficController(dataCalculator);

            while (true)
            {
            }
        }
        public void SetUp()
        {
            _collisionDetector = Substitute.For <ICollisionDetector>();
            _airSpace          = Substitute.For <IAirSpace>();
            _log          = Substitute.For <ILog>();
            _render       = Substitute.For <IRender>();
            _trackStorage = Substitute.For <ITrackStorage>();
            _tos          = Substitute.For <Tos>(Substitute.For <ITransponderReceiver>());

            validTrack1 = new Track {
                Tag = "AAA111", PositionX = 12000, PositionY = 80000, Altitude = 700
            };
            validTrack2 = new Track {
                Tag = "BBB222", PositionX = 80000, PositionY = 12000, Altitude = 1700
            };

            _uut = new AirTrafficController(_collisionDetector, _trackStorage, _airSpace, _render, _log);
        }
Esempio n. 8
0
    /// <summary>
    /// Проверить вызов события запуска самолёта
    /// </summary>
    private void CheckLaunchPlan()
    {
        if (Input.GetButtonDown("LaunchPlane"))
        {
            if (Time.time - _lastTimeLaunchPlane > _cooldownLaunchPlane && _currentPlaneInAir < _maxPlaneInAir)
            {
                _lastTimeLaunchPlane = Time.time;

                PoolObject plane = PoolManager.Get(_indexPlaneInPoll);
                plane.transform.position = transform.position;
                plane.transform.rotation = transform.rotation;
                PlaneMovementLogical planeMovementLogical = plane.GetComponent <PlaneMovementLogical>();
                AirTrafficController.AddPlaneInList(planeMovementLogical);
                planeMovementLogical.EventAfterFinishFly.AddListener(PlaneFinishFly);
                _currentPlaneInAir++;
                planeMovementLogical.Init(transform);
            }
        }
    }
Esempio n. 9
0
        static void Main(string[] args)
        {
            // Mediator patterns defines an object that encapsulates how a set of objects interact between themselves.
            // Communication between objects is encapsulated in a mediator object. Objects do not communicate directly with each other, but through the mediator.
            var airbusGaruda    = new AirbusA320("Garuda Indonesia", 10000);
            var airbusThai      = new AirbusA320("Thai Airways", 25000);
            var boeingSingapore = new Boeing777("Singapore Airlines", 35000);

            var trafficController = new AirTrafficController();

            trafficController.Register(airbusGaruda);
            trafficController.Register(airbusThai);
            trafficController.Register(boeingSingapore);

            airbusThai.SendMessage(trafficController, "Sawasdee krab");
            airbusGaruda.SendMessage(trafficController, "Apa kabar");

            Console.WriteLine("======================================================");
            Console.WriteLine("Note: Singapore Airlines does not sending any messages");
            Console.WriteLine("======================================================");
            Console.ReadKey();
        }
Esempio n. 10
0
        public void GetHashCode_WhenInstanceIsDeseraializeAndSerializedBack_ThenInstancesHashCodesAreEqual()
        {
            // arrange
            AirTrafficControllerBuilder builder = AirTrafficControllerBuilder.Create()
                                                  .WithAdministrativeVersion(AdministrativeRating.Observer)
                                                  .WithATIS("atis")
                                                  .WithATISTime(null)
                                                  .WithCallsign("LZKZ_CTR")
                                                  .WithClientRating(1)
                                                  .WithConnectionTime(DateTime.Now)
                                                  .WithFacilityType(FacilityType.Observer)
                                                  .WithFrequency("123.33")
                                                  .WithLocation(null)
                                                  .WithName("name")
                                                  .WithProtocol("protocol")
                                                  .WithRating(ATCRating.SeniorController)
                                                  .WithServer("server")
                                                  .WithSoftwareName("IVAC")
                                                  .WithSoftwareVersion("1.2.3")
                                                  .WithVID("123456")
                                                  .WithVisualRange(200);

            AirTrafficController instance0 = builder.Build();

            string serializedText = instance0.Serialize();

            AirTrafficController instance1 = serializedText.Deserialize <AirTrafficController>();

            // act
            int result0 = instance0.GetHashCode();
            int result1 = instance1.GetHashCode();

            // assert
            Assert.That(instance0, Is.Not.Null);
            Assert.That(instance1, Is.Not.Null);
            Assert.That(ReferenceEquals(instance0, instance1), Is.Not.True);
            Assert.That(Equals(result0, result1), Is.True);
        }
 public void SetUp()
 {
     _uut = new AirTrafficController();
 }
Esempio n. 12
0
        public void SetUp()
        {
            // The faked IOutpus must return a screen size to ConsoleViews ctor.
            _output = Substitute.For <IOutput>();
            _output.When(x => x.GetLargetsScreenSize(out int w, out int h)).Do(x =>
            {
                x[0] = 80;
                x[1] = 40;
            });

            _collisionDetector = new CollisionDetector();
            _trackStorage      = new TrackStorage();
            _airSpace          = new AirSpace();
            _log         = new FileLogger(_logPath);
            _consoleView = new ConsoleView(_output);
            _atm         = new AirTrafficController(_collisionDetector, _trackStorage, _airSpace, _consoleView, _log);

            // Create Tos with fake TransponderReceiver, attach ATM to subscribe on Tos.
            // _tos.Notify(_tos) will call _atm.Update(). Notify will start the system.
            _tos = new Tos(Substitute.For <ITransponderReceiver>());
            _tos.Attach(_atm);

            // Init some standard List with valid tracks, used to give to Tos before Notify() call.
            _tracks1 = new List <ITrack>
            {
                new Track
                {
                    Tag       = "AAA111",
                    PositionX = 15000,
                    PositionY = 30000,
                    Altitude  = 850,
                    Course    = 0,
                    Timestamp = DateTime.Now,
                    Velocity  = 0
                },
                new Track
                {
                    Tag       = "BBB222",
                    PositionX = 15000,
                    PositionY = 30000,
                    Altitude  = 850,
                    Course    = 0,
                    Timestamp = DateTime.Now,
                    Velocity  = 0
                },
                new Track
                {
                    Tag       = "CCC333",
                    PositionX = 15000,
                    PositionY = 30000,
                    Altitude  = 850,
                    Course    = 0,
                    Timestamp = DateTime.Now,
                    Velocity  = 0
                },
                new Track
                {
                    Tag       = "DDD444",
                    PositionX = 15000,
                    PositionY = 30000,
                    Altitude  = 850,
                    Course    = 0,
                    Timestamp = DateTime.Now,
                    Velocity  = 0
                },
                new Track
                {
                    Tag       = "EEE555",
                    PositionX = 15000,
                    PositionY = 30000,
                    Altitude  = 850,
                    Course    = 0,
                    Timestamp = DateTime.Now,
                    Velocity  = 0
                },
            };
            _tracks2 = new List <ITrack>
            {
                new Track
                {
                    Tag       = "AAA111",
                    PositionX = 15000,
                    PositionY = 80000,
                    Altitude  = 850,
                    Course    = 0,
                    Timestamp = DateTime.Now,
                    Velocity  = 0
                },
                new Track
                {
                    Tag       = "BBB222",
                    PositionX = 25000,
                    PositionY = 36000,
                    Altitude  = 850,
                    Course    = 0,
                    Timestamp = DateTime.Now,
                    Velocity  = 0
                },
                new Track
                {
                    Tag       = "CCC333",
                    PositionX = 10000,
                    PositionY = 27000,
                    Altitude  = 1900,
                    Course    = 0,
                    Timestamp = DateTime.Now,
                    Velocity  = 0
                },
                new Track
                {
                    Tag       = "DDD444",
                    PositionX = 45000,
                    PositionY = 66000,
                    Altitude  = 833,
                    Course    = 0,
                    Timestamp = DateTime.Now,
                    Velocity  = 0
                },
                new Track
                {
                    Tag       = "EEE555",
                    PositionX = 15000,
                    PositionY = 28000,
                    Altitude  = 2500,
                    Course    = 0,
                    Timestamp = DateTime.Now,
                    Velocity  = 0
                },
            };
        }