public void TestInitialise()
        {
            _OriginalClassFactory = Factory.TakeSnapshot();

            _HeartbeatService = TestUtilities.CreateMockSingleton<IHeartbeatService>();
            _StandingDataManager = TestUtilities.CreateMockSingleton<IStandingDataManager>();
            _StandingDataManager.Setup(r => r.FindCodeBlock(It.IsAny<string>())).Returns(new CodeBlock() { Country = "X" });
            _StandingDataManager.Setup(r => r.CodeBlocksLoaded).Returns(true);

            _Statistics = Factory.Singleton.Resolve<IStatistics>().Singleton;
            _Statistics.Initialise();
            _Statistics.ResetConnectionStatistics();
            _Statistics.ResetMessageCounters();

            _Translator = Factory.Singleton.Resolve<IRawMessageTranslator>();
            _Provider = new Mock<IRawMessageTranslatorProvider>() { DefaultValue = DefaultValue.Mock }.SetupAllProperties();
            _Provider.Setup(r => r.UtcNow).Returns(new DateTime(1999, 12, 31));
            _Translator.Provider = _Provider.Object;

            _PositionResetEvent = new EventRecorder<EventArgs<string>>();
            _Translator.PositionReset += _PositionResetEvent.Handler;

            _NowUtc = new DateTime(2012, 1, 2, 3, 4, 5, 6);
            _ModeSMessage = new ModeSMessage() { DownlinkFormat = DownlinkFormat.AllCallReply, Icao24 = 0x112233, ParityInterrogatorIdentifier = 0 };
            _AdsbMessage = new AdsbMessage(_ModeSMessage);

            _RandomIcaos = new List<int>();
        }
Example #2
0
        /// <summary>
        /// See interface docs.
        /// </summary>
        /// <param name="connector"></param>
        /// <param name="bytesExtractor"></param>
        /// <param name="rawMessageTranslator"></param>
        public void ChangeSource(IConnector connector, IMessageBytesExtractor bytesExtractor, IRawMessageTranslator rawMessageTranslator)
        {
            var changed   = false;
            var reconnect = false;

            lock (_SyncLock) {
                reconnect = Connector != null && Connector.EstablishingConnections;
                if (connector != Connector || bytesExtractor != BytesExtractor || rawMessageTranslator != RawMessageTranslator)
                {
                    if (RawMessageTranslator != null && RawMessageTranslator != rawMessageTranslator)
                    {
                        RawMessageTranslator.Dispose();
                    }

                    if (Connector != connector)
                    {
                        if (Connector != null)
                        {
                            UnhookConnector();
                            Connector.Dispose();
                        }
                        Connector = connector;
                        Connector.IsSingleConnection = true;
                        HookConnector();
                    }

                    BytesExtractor       = bytesExtractor;
                    RawMessageTranslator = rawMessageTranslator;
                    if (RawMessageTranslator != null)
                    {
                        RawMessageTranslator.Statistics = Statistics;
                    }

                    TotalMessages    = 0;
                    TotalBadMessages = 0;

                    changed = true;
                }
            }

            if (changed)
            {
                OnSourceChanged(EventArgs.Empty);
                if (reconnect)
                {
                    Connect();
                }
            }
        }
        /// <summary>
        /// See interface docs.
        /// </summary>
        /// <param name="provider"></param>
        /// <param name="bytesExtractor"></param>
        /// <param name="rawMessageTranslator"></param>
        /// <param name="autoReconnect"></param>
        public void ChangeSource(IListenerProvider provider, IMessageBytesExtractor bytesExtractor, IRawMessageTranslator rawMessageTranslator, bool autoReconnect)
        {
            lock (_SyncLock) {
                bool changed = false;

                if (provider != Provider || bytesExtractor != BytesExtractor || rawMessageTranslator != RawMessageTranslator)
                {
                    if (Provider != null)
                    {
                        Disconnect();
                    }
                    if (RawMessageTranslator != null && RawMessageTranslator != rawMessageTranslator)
                    {
                        RawMessageTranslator.Dispose();
                    }

                    Provider             = provider;
                    BytesExtractor       = bytesExtractor;
                    RawMessageTranslator = rawMessageTranslator;

                    TotalMessages    = 0;
                    TotalBadMessages = 0;

                    changed = true;
                }

                if (changed)
                {
                    OnSourceChanged(EventArgs.Empty);
                    if (autoReconnect)
                    {
                        Connect(false);
                    }
                }
            }
        }
        public void RawMessageTranslator_Constructor_Initialises_To_Known_State_And_Properties_Work()
        {
            _Translator.Dispose();

            _Translator = Factory.Singleton.Resolve<IRawMessageTranslator>();
            Assert.IsNotNull(_Translator.Provider);
            TestUtilities.TestProperty(_Translator, r => r.Provider, _Translator.Provider, _Provider.Object);

            TestUtilities.TestProperty(_Translator, r => r.AcceptIcaoInNonPICount, 0, 100);
            TestUtilities.TestProperty(_Translator, r => r.AcceptIcaoInNonPIMilliseconds, 0, 100);
            TestUtilities.TestProperty(_Translator, r => r.AcceptIcaoInPI0Count, 1, 100);
            TestUtilities.TestProperty(_Translator, r => r.AcceptIcaoInPI0Milliseconds, 1000, 42000);
            TestUtilities.TestProperty(_Translator, r => r.GlobalDecodeAirborneThresholdMilliseconds, 10000, 15000);
            TestUtilities.TestProperty(_Translator, r => r.GlobalDecodeFastSurfaceThresholdMilliseconds, 25000, 29000);
            TestUtilities.TestProperty(_Translator, r => r.GlobalDecodeSlowSurfaceThresholdMilliseconds, 50000, 70000);
            TestUtilities.TestProperty(_Translator, r => r.IgnoreMilitaryExtendedSquitter, false);
            TestUtilities.TestProperty(_Translator, r => r.LocalDecodeMaxSpeedAirborne, 15.0, 18.9);
            TestUtilities.TestProperty(_Translator, r => r.LocalDecodeMaxSpeedTransition, 5.0, 1.4);
            TestUtilities.TestProperty(_Translator, r => r.LocalDecodeMaxSpeedSurface, 3.0, 2.7);
            TestUtilities.TestProperty(_Translator, r => r.ReceiverLocation, null, new GlobalCoordinate());
            TestUtilities.TestProperty(_Translator, r => r.ReceiverRangeKilometres, 650, 1000);
            TestUtilities.TestProperty(_Translator, r => r.SuppressReceiverRangeCheck, false);
            TestUtilities.TestProperty(_Translator, r => r.TrackingTimeoutSeconds, 600, 3600);
        }
Example #5
0
 /// <summary>
 /// See interface docs.
 /// </summary>
 /// <param name="connector"></param>
 /// <param name="bytesExtractor"></param>
 /// <param name="rawMessageTranslator"></param>
 public void ChangeSource(IConnector connector, IMessageBytesExtractor bytesExtractor, IRawMessageTranslator rawMessageTranslator)
 {
     throw new InvalidOperationException("You cannot call ChangeSource on a merged feed listener");
 }
Example #6
0
 /// <summary>
 /// See interface docs.
 /// </summary>
 /// <param name="connector"></param>
 /// <param name="bytesExtractor"></param>
 /// <param name="rawMessageTranslator"></param>
 public void ChangeSource(IConnector connector, IMessageBytesExtractor bytesExtractor, IRawMessageTranslator rawMessageTranslator)
 {
     _Original.ChangeSource(connector, bytesExtractor, rawMessageTranslator);
 }
        /// <summary>
        /// See interface docs.
        /// </summary>
        /// <param name="provider"></param>
        /// <param name="bytesExtractor"></param>
        /// <param name="rawMessageTranslator"></param>
        /// <param name="autoReconnect"></param>
        public void ChangeSource(IListenerProvider provider, IMessageBytesExtractor bytesExtractor, IRawMessageTranslator rawMessageTranslator, bool autoReconnect)
        {
            lock(_SyncLock) {
                bool changed = false;

                if(provider != Provider || bytesExtractor != BytesExtractor || rawMessageTranslator != RawMessageTranslator) {
                    if(Provider != null) Disconnect();
                    if(RawMessageTranslator != null && RawMessageTranslator != rawMessageTranslator) RawMessageTranslator.Dispose();

                    Provider = provider;
                    BytesExtractor = bytesExtractor;
                    RawMessageTranslator = rawMessageTranslator;

                    TotalMessages = 0;
                    TotalBadMessages = 0;

                    changed = true;
                }

                if(changed) {
                    OnSourceChanged(EventArgs.Empty);
                    if(autoReconnect) Connect(false);
                }
            }
        }