Пример #1
0
        public void AircraftDetailFetcher_BaseStationDatabase_FileNameChanged_Forces_Refresh_Of_All_Database_Details_On_Next_Fast_Tick()
        {
            // If it performed the refetch immediately then it could cause the options screen to appear to hang as the event
            // is probably being raised on the GUI thread. Pushing it to the next fast heartbeat stops that, it'll happen on
            // our timer thread.

            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", Registration = "OLD"
            };
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _DatabaseAircraft = new BaseStationAircraft()
            {
                ModeS = "ABC123", Registration = "NEW"
            };
            _Database.Raise(r => r.FileNameChanged += null, EventArgs.Empty);
            Assert.AreEqual(1, _FetchedHandler.CallCount);

            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            Assert.AreEqual(2, _FetchedHandler.CallCount);
            var lastArgs = _FetchedHandler.AllArgs[1].Value;

            Assert.AreSame(_DatabaseAircraft, lastArgs.Aircraft);
        }
Пример #2
0
 public void AircraftDetailFetcher_RegisterAircraft_Always_Returns_Null_On_First_Add()
 {
     _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
     {
         ModeS = "ABC123"
     };
     Assert.IsNull(_Fetcher.RegisterAircraft(_Aircraft.Object));
 }
Пример #3
0
        public void AircraftDetailFetcher_Fetched_Not_Raised_If_BaseStationDatabase_AircraftUpdated_Raised_For_Unknown_Aircraft()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", Registration = "New"
            };
            _Database.Raise(r => r.AircraftUpdated += null, new EventArgs <BaseStationAircraft>(_DatabaseAircraftAndFlights));

            Assert.AreEqual(0, _FetchedHandler.CallCount);
        }
Пример #4
0
        public void AircraftDetailFetcher_RegisterAircraft_Searches_For_AircraftType_Using_Database_Detail()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", ICAOTypeCode = "B747"
            };

            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _StandingDataManager.Verify(r => r.FindAircraftType("B747"), Times.Once());
        }
Пример #5
0
        public void AircraftDetailFetcher_RegisterAircraft_Does_Not_Make_Individual_Requests_For_Flight_Counts()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123"
            };

            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _Database.Verify(r => r.GetCountOfFlightsForAircraft(It.IsAny <BaseStationAircraft>(), It.IsAny <SearchBaseStationCriteria>()), Times.Never());
        }
Пример #6
0
        public void AircraftDetailFetcher_RegisterAircraft_Exposes_AircraftType_In_Results()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", ICAOTypeCode = "B747"
            };
            _FindAircraftType = "B747";

            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            Assert.AreSame(_AircraftType, _FetchedHandler.Args.Value.AircraftType);
        }
Пример #7
0
        public void AircraftDetailFetcher_RegisterAircraft_Fetches_Aircraft_Picture_Only_On_First_Fast_Tick()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123"
            };
            _Fetcher.RegisterAircraft(_Aircraft.Object);

            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _AircraftPictureManager.Verify(r => r.FindPicture(It.IsAny <IDirectoryCache>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <PictureDetail>()), Times.Once());
        }
Пример #8
0
        public void AircraftDetailFetcher_RegisterAircraft_Fetches_Aircraft_Record_Only_On_First_Fast_Tick()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123"
            };
            _Fetcher.RegisterAircraft(_Aircraft.Object);

            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            Assert.AreEqual("ABC123", _GetManyAircraftAndFlightsByCodes.Single());
        }
Пример #9
0
        public void AircraftDetailFetcher_Fetched_Not_Raised_If_AircraftType_Does_Not_Change()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", ICAOTypeCode = "B747"
            };
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _Clock.UtcNowValue = _Clock.UtcNowValue.AddMilliseconds(IntervalMilliseconds);

            Assert.AreEqual(1, _FetchedHandler.CallCount);
        }
Пример #10
0
        public void AircraftDetailFetcher_Fetched_Not_Raised_If_Aircraft_Record_Added_Before_Interval_Has_Elapsed()
        {
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123"
            };
            _Clock.UtcNowValue = _Clock.UtcNowValue.AddMilliseconds(IntervalMilliseconds - 1);
            _Heartbeat.Raise(r => r.SlowTick += null, EventArgs.Empty);

            Assert.AreEqual(1, _FetchedHandler.CallCount);
        }
Пример #11
0
        public void AircraftDetailFetcher_Fetched_Raised_If_Picture_Exists()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", Registration = "ABC"
            };
            _PictureManagerReg    = "ABC";
            _PictureManagerIcao24 = "ABC123";

            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            Assert.AreSame(_PictureDetail, _FetchedHandler.Args.Value.Picture);
        }
Пример #12
0
        public void AircraftDetailFetcher_AutoConfigPictureFolderCache_CacheConfigurationChanged_Does_Not_Rerun_Database_Search()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", Registration = "ABC"
            };
            _PictureManagerReg = "ABC";
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _AutoConfigPictureFolderCache.Raise(r => r.CacheConfigurationChanged += null, EventArgs.Empty);

            _AircraftPictureManager.Verify(r => r.FindPicture(_PictureFolderCache.Object, "ABC123", "ABC", It.IsAny <PictureDetail>()), Times.Exactly(2));
            Assert.AreEqual("ABC123", _GetManyAircraftAndFlightsByCodes.Single());
        }
Пример #13
0
        public void StandingDataManager_LoadCompleted_Does_Not_Rerun_A_Database_Search()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", ICAOTypeCode = "B747"
            };
            _FindAircraftType = "B747";
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _StandingDataManager.Raise(r => r.LoadCompleted += null, EventArgs.Empty);

            _StandingDataManager.Verify(r => r.FindAircraftType("B747"), Times.Exactly(2));
            Assert.AreEqual("ABC123", _GetManyAircraftAndFlightsByCodes.Single());
        }
Пример #14
0
        /// <summary>
        /// Fetches many aircraft simultaneously.
        /// </summary>
        /// <param name="fetchedDetails"></param>
        /// <returns></returns>
        protected override bool DoFetchManyAircraft(IEnumerable <AircraftFetcher <string, AircraftDetail> .FetchedDetail> fetchedDetails)
        {
            var allIcaos      = fetchedDetails.Select(r => r.Key).ToArray();
            var newIcaos      = fetchedDetails.Where(r => r.Detail == null || r.Detail.Aircraft == null).Select(r => r.Key).ToArray();
            var existingIcaos = fetchedDetails.Where(r => r.Detail != null && r.Detail.Aircraft != null).Select(r => r.Key).ToArray();

            var aircraftAndFlightCounts = _AutoConfigDatabase.Database.GetManyAircraftAndFlightsCountByCode(newIcaos);
            var aircraft = _AutoConfigDatabase.Database.GetManyAircraftByCode(existingIcaos);

            var combinedAircraft = new Dictionary <string, BaseStationAircraft>();

            foreach (var kvp in aircraftAndFlightCounts)
            {
                combinedAircraft.Add(kvp.Key, kvp.Value);
            }
            foreach (var kvp in aircraft)
            {
                combinedAircraft.Add(kvp.Key, kvp.Value);
            }
            var allOnlineAircraft = _AircraftOnlineLookupManager.LookupMany(allIcaos, combinedAircraft);

            foreach (var kvp in fetchedDetails)
            {
                var icao24        = kvp.Key;
                var fetchedDetail = kvp;

                BaseStationAircraft databaseAircraft = null;
                BaseStationAircraftAndFlightsCount databaseAircraftAndFlights = null;
                if (!aircraft.TryGetValue(icao24, out databaseAircraft))
                {
                    aircraftAndFlightCounts.TryGetValue(icao24, out databaseAircraftAndFlights);
                }
                AircraftOnlineLookupDetail onlineAircraft;
                allOnlineAircraft.TryGetValue(icao24, out onlineAircraft);

                kvp.Detail = ApplyDatabaseRecord(
                    fetchedDetail.Detail,
                    databaseAircraftAndFlights ?? databaseAircraft,
                    onlineAircraft,
                    fetchedDetail.Aircraft,
                    fetchedDetail.IsFirstFetch,
                    databaseAircraftAndFlights != null ? databaseAircraftAndFlights.FlightsCount
                                                       : fetchedDetail.Detail != null ? fetchedDetail.Detail.FlightsCount : 0
                    );
            }

            return(true);
        }
Пример #15
0
        public void AircraftDetailFetcher_Fetched_Raised_If_Aircraft_Has_Database_Record()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", FlightsCount = 100
            };
            _Fetcher.RegisterAircraft(_Aircraft.Object);

            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            Assert.AreEqual(1, _FetchedHandler.CallCount);
            Assert.AreSame(_DatabaseAircraftAndFlights, _FetchedHandler.Args.Value.Aircraft);
            Assert.AreEqual(100, _FetchedHandler.Args.Value.FlightsCount);
            Assert.AreEqual("ABC123", _FetchedHandler.Args.Value.Icao24);
            Assert.AreSame(_Fetcher, _FetchedHandler.Sender);
        }
Пример #16
0
        public void AircraftDetailFetcher_RegisterAircraft_Does_Not_Raise_Multiple_Events_When_Same_Aircraft_Registered_Twice_Before_Initial_Lookup()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123"
            };
            var sameAircraftDifferentObject = TestUtilities.CreateMockInstance <IAircraft>();

            sameAircraftDifferentObject.Setup(r => r.Icao24).Returns("ABC123");

            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Fetcher.RegisterAircraft(sameAircraftDifferentObject.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            Assert.AreEqual(1, _FetchedHandler.CallCount);
        }
Пример #17
0
        public void AircraftDetailFetcher_Fetched_Raised_If_BaseStationDatabase_AircraftUpdated_Raised_And_Details_Have_Not_Changed()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123"
            };
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123"
            };
            _Database.Raise(r => r.AircraftUpdated += null, new EventArgs <BaseStationAircraft>(_DatabaseAircraftAndFlights));

            Assert.AreEqual(1, _FetchedHandler.CallCount);
        }
Пример #18
0
        public void AircraftDetailFetcher_Fetched_Does_Not_Fetch_Aircraft_Record_If_BaseStationDatabase_AircraftUpdated_Raised()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123"
            };
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", Registration = "New"
            };
            _Database.Raise(r => r.AircraftUpdated += null, new EventArgs <BaseStationAircraft>(_DatabaseAircraftAndFlights));

            Assert.AreEqual("ABC123", _GetManyAircraftAndFlightsByCodes.Single());
        }
Пример #19
0
        public void AircraftDetailFetcher_Fetched_Not_Raised_If_AircraftType_Changes()
        {
            // Standing data manager will tell us if it's possible that the aircraft type has changed - we should
            // only check it if the code changes and we already have a test for that.

            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", ICAOTypeCode = "B747"
            };
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _FindAircraftType  = "B747";
            _Clock.UtcNowValue = _Clock.UtcNowValue.AddMilliseconds(IntervalMilliseconds);

            Assert.AreEqual(1, _FetchedHandler.CallCount);
        }
Пример #20
0
        public void AircraftDetailFetcher_Fetched_Raised_With_Null_Aircraft_If_Aircraft_Record_Removed_After_Interval_Has_Elapsed()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123"
            };
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _DatabaseAircraftAndFlights       = null;
            _Clock.UtcNowValue                = _Clock.UtcNowValue.AddMilliseconds(IntervalMilliseconds);
            _Heartbeat.Raise(r => r.SlowTick += null, EventArgs.Empty);

            Assert.AreEqual(2, _FetchedHandler.CallCount);
            Assert.IsNotNull(_FetchedHandler.AllArgs[0].Value.Aircraft);
            Assert.IsNull(_FetchedHandler.AllArgs[1].Value.Aircraft);
        }
Пример #21
0
        public void AircraftDetailFetcher_Fetched_Not_Raised_If_Aircraft_Record_Remains_Deleted_After_Interval_Elapses_Twice()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123"
            };
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);     // First raise of Fetched

            _DatabaseAircraftAndFlights       = null;
            _Clock.UtcNowValue                = _Clock.UtcNowValue.AddMilliseconds(IntervalMilliseconds);
            _Heartbeat.Raise(r => r.SlowTick += null, EventArgs.Empty);     // Second raise of Fetched

            _Clock.UtcNowValue = _Clock.UtcNowValue.AddMilliseconds(IntervalMilliseconds);
            _Heartbeat.Raise(r => r.SlowTick += null, EventArgs.Empty);     // Should not trigger a third

            Assert.AreEqual(2, _FetchedHandler.CallCount);
        }
Пример #22
0
        public void AircraftDetailFetcher_Fetched_Refetches_Aircraft_Picture_If_BaseStationDatabase_AircraftUpdated_Raised_With_Same_Registration()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", Registration = "ABC"
            };
            _PictureManagerReg = "XYZ";
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", Registration = "ABC"
            };
            _Database.Raise(r => r.AircraftUpdated += null, new EventArgs <BaseStationAircraft>(_DatabaseAircraftAndFlights));

            _AircraftPictureManager.Verify(r => r.FindPicture(_PictureFolderCache.Object, "ABC123", "ABC", It.IsAny <PictureDetail>()), Times.Exactly(2));
        }
Пример #23
0
        public void AircraftDetailFetcher_Fetched_Raised_If_Picture_Found_But_Database_Record_Unchanged()
        {
            _DatabaseAircraft = _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", Registration = "ABC"
            };
            _PictureManagerReg = null;
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _Clock.UtcNowValue                = _Clock.UtcNowValue.AddMilliseconds(IntervalMilliseconds);
            _PictureManagerReg                = "ABC";
            _PictureManagerIcao24             = "ABC123";
            _Heartbeat.Raise(r => r.SlowTick += null, EventArgs.Empty);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            Assert.AreEqual(2, _FetchedHandler.CallCount);
            Assert.AreSame(_PictureDetail, _FetchedHandler.Args.Value.Picture);
        }
Пример #24
0
        public void AircraftDetailFetcher_Fetched_Not_Raised_If_Aircraft_Unchanged_After_AircraftUpdated_Raised()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123"
            };
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _DatabaseAircraft = new BaseStationAircraft()
            {
                ModeS = "ABC123", Registration = "New"
            };
            _Database.Raise(r => r.AircraftUpdated += null, new EventArgs <BaseStationAircraft>(_DatabaseAircraftAndFlights));

            _Clock.UtcNowValue = _Clock.UtcNowValue.AddMilliseconds(IntervalMilliseconds);
            _Heartbeat.Raise(r => r.SlowTick += null, EventArgs.Empty);

            Assert.AreEqual(2, _FetchedHandler.CallCount);
        }
Пример #25
0
        public void AircraftDetailFetcher_Fetched_Raised_If_Aircraft_Record_Changes()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", FlightsCount = 52
            };

            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _DatabaseAircraft = new BaseStationAircraft()
            {
                ModeS = "ABC123", Registration = "New Registration"
            };
            _Clock.UtcNowValue = _Clock.UtcNowValue.AddMilliseconds(IntervalMilliseconds);
            _Heartbeat.Raise(r => r.SlowTick += null, EventArgs.Empty);

            Assert.AreEqual(2, _FetchedHandler.CallCount);
            Assert.AreEqual("New Registration", _FetchedHandler.Args.Value.Aircraft.Registration);
            Assert.AreEqual(52, _FetchedHandler.Args.Value.FlightsCount);
        }
Пример #26
0
        public void StandingDataManager_LoadCompleted_Exceptions_Get_Logged_But_Do_Not_Bubble_Up()
        {
            var messageLogged = false;

            _Log.Setup(r => r.WriteLine(It.IsAny <string>())).Callback((string x) => { messageLogged = true; });
            _Log.Setup(r => r.WriteLine(It.IsAny <string>(), It.IsAny <object[]>())).Callback((string x, object[] args) => { messageLogged = true; });

            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", ICAOTypeCode = "B747"
            };
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _StandingDataManager.Setup(r => r.FindAircraftType(It.IsAny <string>()))
            .Callback((string code) => { throw new InvalidOperationException(); });

            _StandingDataManager.Raise(r => r.LoadCompleted += null, EventArgs.Empty);

            Assert.IsTrue(messageLogged);
        }
Пример #27
0
        public void AircraftDetailFetcher_StandingDataManager_AutoConfigPictureFolderCache_CacheConfigurationChanged_Exceptions_Get_Logged_But_Do_Not_Bubble_Up()
        {
            var messageLogged = false;

            _PictureManagerIcao24 = "ABC123";
            _Log.Setup(r => r.WriteLine(It.IsAny <string>())).Callback((string x) => { messageLogged = true; });
            _Log.Setup(r => r.WriteLine(It.IsAny <string>(), It.IsAny <object[]>())).Callback((string x, object[] args) => { messageLogged = true; });

            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", Registration = "ABC"
            };
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _PictureManagerThrowException = true;

            _AutoConfigPictureFolderCache.Raise(r => r.CacheConfigurationChanged += null, EventArgs.Empty);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            Assert.IsTrue(messageLogged);
        }
Пример #28
0
        public void AircraftDetailFetcher_RegisterAircraft_Does_Not_Refetch_AircraftType_If_ModelIcao_Has_Not_Changed()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", ICAOTypeCode = "B747"
            };
            _FindAircraftType = "B747";

            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _Clock.UtcNowValue          = _Clock.UtcNowValue.AddMilliseconds(IntervalMilliseconds);
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", Registration = "ABC", ICAOTypeCode = "B747"
            };
            _Heartbeat.Raise(r => r.SlowTick += null, EventArgs.Empty);

            _StandingDataManager.Verify(r => r.FindAircraftType("B747"), Times.Once());
            Assert.AreEqual(2, _FetchedHandler.CallCount);
            Assert.AreSame(_AircraftType, _FetchedHandler.AllArgs[1].Value.AircraftType);
        }
Пример #29
0
        public void AircraftDetailFetcher_RegisterAircraft_Returns_The_Correct_Details_If_The_Aircraft_Has_Already_Been_Registered()
        {
            var sameAircraftDifferentObject = TestUtilities.CreateMockInstance <IAircraft>();

            sameAircraftDifferentObject.Setup(r => r.Icao24).Returns("ABC123");
            sameAircraftDifferentObject.Setup(r => r.Registration).Returns("G-ABCD");
            _PictureManagerReg    = "G-ABCD";
            _PictureManagerIcao24 = "ABC123";

            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", Registration = "G-ABCD", FlightsCount = 88
            };
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            var details = _Fetcher.RegisterAircraft(sameAircraftDifferentObject.Object);

            Assert.AreSame(_DatabaseAircraftAndFlights, details.Aircraft);
            Assert.AreEqual(88, details.FlightsCount);
            Assert.AreSame(_PictureDetail, details.Picture);
        }
Пример #30
0
        public void AircraftDetailFetcher_Fetched_Does_Refetches_Aircraft_Picture_If_BaseStationDatabase_AircraftUpdated_Raised_With_New_Registration()
        {
            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", Registration = "ABC"
            };
            _PictureManagerReg    = "XYZ";
            _PictureManagerIcao24 = "ABC123";
            _Fetcher.RegisterAircraft(_Aircraft.Object);
            _Heartbeat.Raise(r => r.FastTick += null, EventArgs.Empty);

            _DatabaseAircraftAndFlights = new BaseStationAircraftAndFlightsCount()
            {
                ModeS = "ABC123", Registration = "XYZ"
            };
            _Database.Raise(r => r.AircraftUpdated += null, new EventArgs <BaseStationAircraft>(_DatabaseAircraftAndFlights));
            _Heartbeat.Raise(r => r.FastTick       += null, EventArgs.Empty);

            _AircraftPictureManager.Verify(r => r.FindPicture(_PictureFolderCache.Object, "ABC123", "ABC", It.IsAny <PictureDetail>()), Times.Once());
            _AircraftPictureManager.Verify(r => r.FindPicture(_PictureFolderCache.Object, "ABC123", "XYZ", It.IsAny <PictureDetail>()), Times.Once());
            Assert.AreSame(_PictureDetail, _FetchedHandler.AllArgs[1].Value.Picture);
        }