示例#1
0
        public void TryGetValue_ReturnsDefaultIfNotExists()
        {
            var cache = new NanoCache <string, int>();

            cache.TryGetValue("item", out var value);
            Assert.AreEqual(0, value);
        }
示例#2
0
        public void Set_StoresANewValueIntoTheCache()
        {
            var cache = new NanoCache <string, int>();

            cache.Set("item", 999);
            Assert.AreEqual(cache["item"], 999);
        }
示例#3
0
        public void Ctor_UsesDefaultEqualityComparer()
        {
            var cache = new NanoCache <string, int> {
                ["a"] = 999
            };

            Assert.AreEqual(cache["A"], 0);
        }
示例#4
0
        public void TryGetValue_ReturnsTrueIfItemDoesExist()
        {
            var cache = new NanoCache <string, int> {
                ["item"] = 1234
            };

            Assert.IsTrue(cache.TryGetValue("item", out _));
        }
示例#5
0
        public void Count_IsIncrementedWhenItemIsAdded()
        {
            var cache = new NanoCache <string, int> {
                ["1"] = 1
            };

            Assert.AreEqual(1, cache.Count);
        }
示例#6
0
        public void Indexer_StoresANewValueIntoTheCache()
        {
            var cache = new NanoCache <string, int> {
                ["item"] = 999
            };

            Assert.AreEqual(cache["item"], 999);
        }
示例#7
0
        public void Indexer_DoesNotAcknowledgeExpiredItems()
        {
            var cache = new NanoCache <string, int>();

            cache.Set("item", 1234, 10);
            Thread.Sleep(100);

            Assert.AreEqual(0, cache["item"]);
        }
示例#8
0
        public void TryGetValue_ReturnsItemIfExists()
        {
            var cache = new NanoCache <string, int> {
                ["item"] = 1234
            };

            cache.TryGetValue("item", out var value);
            Assert.AreEqual(1234, value);
        }
示例#9
0
        public void Ctor_TakesEqualityComparer_IntoConsideration()
        {
            var cache = new NanoCache <string, int>(StringComparer.OrdinalIgnoreCase)
            {
                ["a"] = 999
            };

            Assert.AreEqual(cache["A"], 999);
        }
示例#10
0
        public void TryGetValue_ReturnsFalseIfItemExpired()
        {
            var cache = new NanoCache <string, int>();

            cache.Set("item", 1234, 10);
            Thread.Sleep(100);

            Assert.IsFalse(cache.TryGetValue("item", out _));
        }
示例#11
0
        public void Remove_ReturnsTrueIfItemRemoved()
        {
            var cache = new NanoCache <string, int>
            {
                ["item"] = 999
            };

            Assert.IsTrue(cache.Remove("item"));
        }
示例#12
0
        public void Remove_DoesNotAcknowledgeExpiredItems()
        {
            var cache = new NanoCache <string, int>();

            cache.Set("item", 1234, 10);
            Thread.Sleep(100);

            Assert.IsFalse(cache.Remove("item"));
        }
示例#13
0
        public void Count_IsDecrementedWhenItemIsRemoved()
        {
            var cache = new NanoCache <string, int>
            {
                ["1"] = 1
            };

            cache.Remove("1");
            Assert.AreEqual(0, cache.Count);
        }
示例#14
0
        public void Indexer_RemovesTheValueFromTheCacheIfDefaultProvided()
        {
            var cache = new NanoCache <string, int>
            {
                ["item"] = 999,
                ["item"] = 0
            };

            Assert.IsFalse(cache.Remove("item"));
        }
示例#15
0
        public void Indexer_ReplacesAnExistingValueInTheCache()
        {
            var cache = new NanoCache <string, int>
            {
                ["item"] = 999,
                ["item"] = 111
            };

            Assert.AreEqual(cache["item"], 111);
        }
示例#16
0
        public void Set_RefreshesValueOfExpiredItem()
        {
            var cache = new NanoCache <string, int>();

            cache.Set("item", 1234, 10);
            Thread.Sleep(100);
            cache.Set("item", 9876, 10);

            Assert.AreEqual(9876, cache["item"]);
        }
示例#17
0
        public void Remove_RemovesAnExistingItemFromTheCache()
        {
            var cache = new NanoCache <string, int>
            {
                ["item"] = 999
            };

            cache.Remove("item");
            Assert.AreEqual(cache["item"], 0);
        }
示例#18
0
        public void Count_IncludesExpiredItems()
        {
            var cache = new NanoCache <string, int>();

            cache.Set("1", 1, 10);

            Thread.Sleep(100);

            Assert.AreEqual(1, cache.Count);
        }
示例#19
0
        public void Count_IsUpdatedWhenExpiredItemIsFlushed2()
        {
            var cache = new NanoCache <string, int>();

            cache.Set("1", 1, 10);
            Thread.Sleep(100);

            Assert.AreEqual(0, cache["1"]);
            Assert.AreEqual(0, cache.Count);
        }
示例#20
0
        public void Count_IsNotIncrementedWhenItemIsUpdated()
        {
            var cache = new NanoCache <string, int>
            {
                ["1"] = 1,
                ["1"] = 2
            };

            Assert.AreEqual(1, cache.Count);
        }
示例#21
0
        public void Count_IsDecrementedWhenItemIsReplacedWithDefaultValue()
        {
            var cache = new NanoCache <string, int>
            {
                ["1"] = 1,
                ["1"] = 0
            };

            Assert.AreEqual(0, cache.Count);
        }
示例#22
0
        public void Set_ReplacesAnExistingValueInTheCache()
        {
            var cache = new NanoCache <string, int>
            {
                ["item"] = 999
            };

            cache.Set("item", 111);

            Assert.AreEqual(cache["item"], 111);
        }
示例#23
0
        public void Flush_DoesNothingForUnExpiredItems()
        {
            var cache = new NanoCache <string, int>
            {
                ["1"] = 1
            };

            cache.Flush();

            Assert.AreEqual(1, cache.Count);
        }
示例#24
0
        public void Flush_RemovesTheExpiredItems()
        {
            var cache = new NanoCache <string, int>();

            cache.Set("1", 1, 10);
            Thread.Sleep(100);

            cache.Flush();

            Assert.AreEqual(0, cache.Count);
        }
示例#25
0
        public void Set_RemovesTheValueFromTheCacheIfDefaultProvided()
        {
            var cache = new NanoCache <string, int>
            {
                ["item"] = 999
            };

            cache.Set("item", 0);

            Assert.IsFalse(cache.Remove("item"));
        }
示例#26
0
        public void Flush_RemovesTheExpiredItemsWhileLeavingTheNormalOnes()
        {
            var cache = new NanoCache <string, int>();

            cache.Set("1", 1, 10);

            Thread.Sleep(100);

            cache["2"] = 2;
            cache.Flush();

            Assert.AreEqual(1, cache.Count);
        }
示例#27
0
        public void TryGetValue_ThrowsException_IfKeyIsNull()
        {
            var cache = new NanoCache <string, int>();

            Assert.Throws <ArgumentNullException>(() => cache.TryGetValue(null, out _));
        }
示例#28
0
        public void TryGetValue_ReturnsFalseIfItemDoesNotExist()
        {
            var cache = new NanoCache <string, int>();

            Assert.IsFalse(cache.TryGetValue("item", out _));
        }
示例#29
0
        public void Set_ThrowsException_ForNullKey()
        {
            var cache = new NanoCache <string, int>();

            Assert.Throws <ArgumentNullException>(() => cache.Set(null, 100));
        }
示例#30
0
        public void Set_ThrowsException_ForTtlLessThanMinusOne()
        {
            var cache = new NanoCache <string, int>();

            Assert.Throws <ArgumentOutOfRangeException>(() => cache.Set("a", 1, -2));
        }