public void GetImageAsByteArray_NoParamsAndImageCacheHasNoData_ReturnsNull()
        {
            // Arrange
            var imageCache = new CacheUpdateService();

            // Act
            var imgCacheSvc = new ImageFromCacheService(imageCache);

            // Assert
            Assert.IsNull(imgCacheSvc.GetCurrentImageAsByteArray());
        }
        public void GetImageAsByteArray_NoParamsImageCacheHasData_ReturnsNotNull()
        {
            // Arrange
            var imageCache = new CacheUpdateService();

            imageCache.UpdateImage(new byte[2], 1, DateTime.MaxValue);

            // Act
            var imgCacheSvc = new ImageFromCacheService(imageCache);


            // Assert
            Assert.IsNotNull(imgCacheSvc.GetCurrentImageAsByteArray());
        }
        [TestCase(10, StrCacheLastUpdate, 2000, 5, true, 99, -1, false)] // Cannot update = new date is in the past
        public void UpdateCachedImage_AnyParameters_ReturnExpectedResult(int oldUpdaterUserId, string strCacheLastUpdate, int cacheLifeTime,
                                                                         int cacheFps, bool cacheHasData,
                                                                         int newCacheUpdaterUserId, int newCacheUpdaterDelay, bool expectedSuccess)
        {
            // Arrange
            DateTime cacheLastUpdate     = DateTime.ParseExact(s: strCacheLastUpdate, format: "yyyy-MM-dd HH:mm:ss.fff", provider: null);
            DateTime timeWhenCacheIsRead = cacheLastUpdate.AddMilliseconds(newCacheUpdaterDelay);
            var      oldImageArraySize   = 2;

            byte[] imageBytes = cacheHasData ? new byte[oldImageArraySize] : null;

            CacheUpdateService imageCache = CreateImageCache(imageBytes, oldUpdaterUserId, cacheLastUpdate);
            var cachingService            = new ImageFromCacheService(cacheUpdateService: imageCache, logger: null, cacheLifeTimeMilliSec: cacheLifeTime, framesPerSecond: cacheFps);
            var newImageArraySize         = 44;

            // Act
            cachingService.UpdateCachedImage(new byte[newImageArraySize], newCacheUpdaterUserId, timeWhenCacheIsRead);

            // Assert
            bool cacheHasBeenUpdated = cachingService.GetCurrentImageAsByteArray().Length == newImageArraySize;

            Assert.That(cacheHasBeenUpdated, Is.EqualTo(expectedSuccess));
        }