示例#1
0
        public void GetDevice_CheckDeviceInCacheMatchesDeviceReturnedByKeySentIn_DevicesMatch()
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);

            var insertList = new List <IBullseyeDevice> {
                dev05, dev01, dev02, dev03, dev04
            };

            cache.AddMultipleDevices(insertList, 3);

            var myObj = (BullseyeDevice)cache.GetDevice("device 01");

            var key1   = myObj.Id;
            var key2   = dev01.Id;
            var value1 = myObj.Payload;
            var value2 = dev01.Payload;

            Assert.Equal(key1, key2);
            Assert.Equal(value1, value2);
            Assert.True(myObj.Equals(dev01));
        }
示例#2
0
        public void RemoveDevice_RemoveDeviceThatIsNotInCache_DoesNotThrowException()
        {
            //What should happen in this situation? todo
            //todo
            var flag          = false;
            var keyword       = "No Device";
            var removedDevice = "";

            void RemoveAction(IBullseyeDevice device)
            {
                removedDevice = device.Id;
                flag          = true;
                keyword       = "Device Has Been Deleted";
            }

            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction, RemoveAction, logger);

            cache.AddDevice(dev07, 3);
            cache.RemoveDevice(dev01);    //this device is not in the cache
            cache.RemoveDevice(dev01.Id); //this device identified by string is not in the cache

            Assert.False(flag);
            Assert.Equal("", removedDevice);
            Assert.NotEqual("Device Has Been Deleted", keyword);
            Assert.Equal(1, cache.Count);

            cache.RemoveDevice(dev07); //this device is in the cache
            Assert.True(flag);
            Assert.Equal(dev07.Id, removedDevice);
            Assert.Equal("Device Has Been Deleted", keyword);
            Assert.Equal(0, cache.Count);
        }
示例#3
0
        public void NewDeviceCallback_StartUpActionDoesSomething_ActionsArePerformed()
        {
            var flag        = false;
            var keyword     = "Not In";
            var addedDevice = "";

            void StartUpAction(IBullseyeDevice device)
            {
                addedDevice = device.Id;
                flag        = true;
                keyword     = "Now In";
            }

            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, StartUpAction, _helper.UpdateAction, _helper.EvictionAction, logger);

            Assert.False(flag);
            Assert.Equal("Not In", keyword);
            cache.AddDevice(dev01, 3);
            Assert.True(flag);
            Assert.Equal("Now In", keyword);
            Assert.Equal(dev01.Id, addedDevice);
        }
示例#4
0
        public void RemovedDeviceCallback_DeviceIsRemoved_EvictionCallbackIsCalled()
        {
            var flag          = true;
            var keyword       = "Not In";
            var removedDevice = "";

            void RemoveAction(IBullseyeDevice device)
            {
                removedDevice = device.Id;
                flag          = false;
                keyword       = "Now Removed";
            }

            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction, RemoveAction, logger);

            Assert.True(flag);
            Assert.Equal("Not In", keyword);
            cache.AddDevice(dev01, 3);

            cache.RemoveDevice(dev01);

            Assert.False(flag);
            Assert.Equal(dev01.Id, removedDevice);
            Assert.Equal("Now Removed", keyword);
        }
示例#5
0
        public void GetDevice_GetsNullString_ReturnsNull(string key)
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction, _helper.EvictionAction, logger);

            Assert.Null(cache.GetDevice(key));
        }
示例#6
0
        public void RemoveDevice_GetsNullString_ThrowsNullException(string key)
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction, _helper.EvictionAction, logger);

            Assert.Throws <ArgumentNullException>(() => cache.RemoveDevice(key));
        }
示例#7
0
        public void UpdateDevice_GetsNullIBullseyeDevice_ThrowsNullException(IBullseyeDevice device)
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);

            Assert.Throws <ArgumentNullException>(() => cache.UpdateDevice(device, 3));
        }
示例#8
0
        public void AddDevice_AddSingleDeviceWithBadTime_ThrowsException(int seconds)
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);

            Assert.Throws <ArgumentOutOfRangeException>(() => cache.AddDevice(dev02, seconds));
        }
示例#9
0
        public void AddMultipleDevices_SearchForNullList_ThrowsException(List <IBullseyeDevice> list)
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);

            Assert.Throws <ArgumentNullException>(() => cache.AddMultipleDevices(list, 3));
        }
示例#10
0
        public void CheckCacheForMultipleDevices_GetsNullList_ReturnsNoDevices(List <IBullseyeDevice> list)
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache     = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction, _helper.EvictionAction, logger);
            var emptyList = cache.CheckCacheForMultipleDevices(list);

            Assert.Empty(emptyList);
        }
示例#11
0
        public void BullseyeMemoryCache_DefaultConstructor_EmptyCacheCreated()
        {
            var moqCache = new Mock <IMemoryCache>();
            var mock     = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger   = mock.Object;

            var cache = new BullseyeMemoryCache(moqCache.Object, logger);

            var size = cache.Count;

            Assert.Equal(0, size);
        }
示例#12
0
        public void UpdateDevice_GetsBadIntSeconds_ThrowsException(int seconds)
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);

            cache.AddDevice(dev07, 3);
            Assert.Equal(1, cache.Count);
            Assert.Throws <ArgumentOutOfRangeException>(() => cache.UpdateDevice(dev07, seconds));
        }
示例#13
0
        public void Count_EmptyCache_ReturnsZero()
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);

            var size = cache.Count;

            Assert.Equal(0, size);
        }
示例#14
0
        public void GetDevice_SendInNullDevice_ThrowsException(String DeviceString, BullseyeDevice Device)
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);

            cache.AddDevice(dev02, 5);

            Assert.Null(cache.GetDevice(dev05));
        }
示例#15
0
        public void DefaultConstructor_DefaultCacheConstructor_NoUpdateDeviceCallbackExistsButDeviceGetsUpdated()
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, logger);

            cache.AddDevice(dev01, 3);
            Assert.Equal(1, cache.Count);

            cache.UpdateDevice(dev01, 10);
            Assert.Equal(1, cache.Count);
        }
示例#16
0
        public void UpdateDevice_UpdateDeviceThatDoesNotExist_DeviceIsInserted()
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);

            cache.UpdateDevice(dev02, 3);
            var size = cache.Count;

            Assert.Equal(1, size);
        }
示例#17
0
        public void Count_SingleDeviceInCache_ReturnsOne()
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);

            cache.AddDevice(dev01, 3);
            var size = cache.Count;

            Assert.Equal(1, size);
        }
示例#18
0
        public void AddMultipleDevices_EmptyListAdded_CacheSizeIsZero()
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);
            var list = new List <IBullseyeDevice>();

            cache.AddMultipleDevices(list, 3);
            var size = cache.Count;

            Assert.Equal(0, size);
        }
示例#19
0
        public void AddMultipleDevices_AddDevicesWithBadTime_ThrowsException(int seconds)
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);
            var list = new List <IBullseyeDevice>()
            {
                dev01, dev02, dev03
            };

            Assert.Throws <ArgumentOutOfRangeException>(() => cache.AddMultipleDevices(list, seconds));
        }
示例#20
0
        public void AddMultipleDevices_GetsNegativeInt_ThrowsOutOfRangeException()
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);

            var list = new List <IBullseyeDevice> {
                dev01, dev02, dev03
            };

            Assert.Throws <ArgumentOutOfRangeException>(() => cache.AddMultipleDevices(list, -3));
        }
示例#21
0
        public void UpdateDevice_UpdateDeviceInCache_PayloadChanged()
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);

            cache.AddDevice(dev01, 3);
            var editedPayload = dev01.Payload + "edit!";
            var dev01Copy     = new BullseyeDevice(dev01.Id, editedPayload);

            cache.UpdateDevice(dev01Copy, 3);

            Assert.NotEqual(dev01Copy.Payload, dev01.Payload);
        }
示例#22
0
        public void RemoveDevice_RemoveNullDevice_ThrowsException(BullseyeDevice device)
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);

            var insertList = new List <IBullseyeDevice> {
                dev05, dev01, dev02, dev03, dev04
            };

            cache.AddMultipleDevices(insertList, 3);

            Assert.Throws <ArgumentNullException>(() => cache.RemoveDevice(device));
        }
示例#23
0
        public void NewDeviceCallback_StartUpActionDefaultCacheConstructor_NoNewDeviceCallbackIsCalledButDeviceGetsAdded()
        {
            var flag    = false;
            var keyword = "Not In";

            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, logger);

            Assert.False(flag);
            Assert.Equal("Not In", keyword);
            cache.AddDevice(dev01, 3);
            Assert.Equal("Not In", keyword);
            Assert.False(flag);
            Assert.Equal(1, cache.Count);
        }
示例#24
0
        public void AddMultipleDevices_ListOfThreeDevicesAdded_CacheSizeIsThree()
        {
            var mockBc = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mockBc.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);
            var list = new List <IBullseyeDevice>()
            {
                dev05, dev01, dev02
            };

            cache.AddMultipleDevices(list, 3);
            var size = cache.Count;

            Assert.Equal(3, size);
        }
示例#25
0
        public void AddDevice_AddModifiedDeviceAlreadyInCache_ReturnsOne()
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);

            cache.AddDevice(dev02, 3);
            var updatedDevice = new BullseyeDevice(dev02.Id, "EDITED DEVICE");

            cache.AddDevice(updatedDevice, 3);

            var size = cache.Count;

            Assert.Equal(1, size);
        }
示例#26
0
        public void GetDevice_CheckDeviceInCacheMatchDeviceSentIn_DevicesMatch()
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);

            var insertList = new List <IBullseyeDevice> {
                dev05, dev01, dev02, dev03, dev04
            };

            cache.AddMultipleDevices(insertList, 3);

            var myObj = (BullseyeDevice)cache.GetDevice(dev01);

            Assert.True(myObj.Equals(dev01));
        }
示例#27
0
        public void AddMultipleDevices_AddMixOfNewAndExistingDevices_AllDevicesAddedAsExpected()
        {
            var flag = false;
            var updatedDeviceList = new List <IBullseyeDevice>();
            var keyword           = "no devices";

            void UpdateAction(IBullseyeDevice device)
            {
                flag = true;
                updatedDeviceList.Add(device);
            }

            void StartUpAction(IBullseyeDevice device)
            {
                flag    = true;
                keyword = "New Device";
            }

            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache   = new BullseyeMemoryCache(_cache, StartUpAction, UpdateAction, _helper.EvictionAction, logger);
            var addList = new List <IBullseyeDevice> {
                dev01, dev02, dev03, dev04
            };
            var sameList = new List <IBullseyeDevice> {
                dev01, dev02, dev05, dev06
            };

            cache.AddMultipleDevices(addList, 4);
            Assert.True(flag);
            Assert.Equal("New Device", keyword);
            Assert.Equal(4, cache.Count);

            cache.AddMultipleDevices(sameList, 6);

            Assert.Contains <IBullseyeDevice>(dev01, updatedDeviceList);
            Assert.Contains <IBullseyeDevice>(dev02, updatedDeviceList);
            Assert.DoesNotContain <IBullseyeDevice>(dev05, updatedDeviceList);
            Assert.DoesNotContain <IBullseyeDevice>(dev06, updatedDeviceList);
            Assert.True(flag);
            Assert.Equal(6, cache.Count);
        }
示例#28
0
        public void RemoveAllDevices_RemoveDevicesFromCache_CacheIsEmpty()
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);

            var insertList = new List <IBullseyeDevice> {
                dev05, dev01, dev02, dev03, dev04
            };

            cache.AddMultipleDevices(insertList, 3);

            cache.RemoveAllDevices();
            var countAfterRemoval = cache.Count;

            Assert.Equal(0, countAfterRemoval);
        }
示例#29
0
        public void RemoveDevice_RemoveDeviceNotInCache_NoDeviceRemoved()
        {
            var mock   = new Mock <ILogger <IBullseyeMemoryCache> >();
            var logger = mock.Object;

            var cache = new BullseyeMemoryCache(_cache, _helper.StartUpAction, _helper.UpdateAction,
                                                _helper.EvictionAction, logger);

            List <IBullseyeDevice> insertList = new List <IBullseyeDevice> {
                dev05, dev01, dev02, dev03, dev04
            };

            cache.AddMultipleDevices(insertList, 3);

            cache.RemoveDevice(dev06);
            var countAfterRemoval = cache.Count;

            Assert.Equal(5, countAfterRemoval);
        }
示例#30
0
        public void AddMultipleDevices_AddDevicesThatAlreadyExist_UpdateDeviceCallbackRunsInstead()
        {
            var flag    = false;
            var keyword = "No Device";

            void UpdateAction(IBullseyeDevice device)
            {
                flag    = true;
                keyword = "Device Already Exists";
            }

            void StartUpAction(IBullseyeDevice device)
            {
                flag    = true;
                keyword = "New Device";
            }

            var mock = new Mock <ILogger <IBullseyeMemoryCache> >();

            var logger = mock.Object;

            var cache   = new BullseyeMemoryCache(_cache, StartUpAction, UpdateAction, _helper.EvictionAction, logger);
            var addList = new List <IBullseyeDevice> {
                dev01, dev02, dev03
            };
            var sameList = new List <IBullseyeDevice> {
                dev01, dev02, dev03
            };

            cache.AddMultipleDevices(addList, 4);
            Assert.True(flag);
            Assert.Equal("New Device", keyword);
            Assert.Equal(3, cache.Count);

            cache.AddMultipleDevices(sameList, 6);
            Assert.True(flag);
            Assert.Equal("Device Already Exists", keyword);
            Assert.Equal(3, cache.Count);
        }