public void Test_IsKey_WhenKeyExists() { var cache = new NativeCache <int>(3); cache.Put("a", 1); cache.Put("b", 2); cache.Put("c", 3); cache.Get("a"); cache.Get("a"); cache.Get("a"); cache.Get("b"); cache.Get("b"); cache.Get("c"); cache.Put("d", 4); Assert.AreEqual(true, cache.IsKey("a")); Assert.AreEqual(true, cache.IsKey("b")); Assert.AreEqual(true, cache.IsKey("d")); Assert.AreEqual(false, cache.IsKey("c")); CollectionAssert.AreEqual(new int[] { 0, 3, 2 }, cache.hits); Assert.AreEqual(1, cache.Get("a")); Assert.AreEqual(2, cache.Get("b")); Assert.AreEqual(4, cache.Get("d")); }
public void TestPutGetCount_9() { NativeCache <int> cache = new NativeCache <int>(8); cache.Put("6", 3); int[] v = cache.values; string[] s = cache.slots; int[] h = cache.hits; int index = 0; for (int i = 0; i < 8; i++) { if (cache.values[i] != 0) { index = i; } } Assert.AreEqual(3, cache.values[index]); Assert.AreEqual(true, cache.slots[index] != null); Assert.AreEqual(0, cache.hits[index]); Assert.AreEqual(3, cache.Get("6")); Assert.AreEqual(1, cache.hits[index]); }
public void TestDifferentCaches() { Cache cache1 = new NativeCache(/*"cache1"*/); Cache cache2 = new NativeCache(/*"cache2"*/); cache1.Add("A", 5); Assert.AreEqual(cache2.Get <int>("A"), 5); }
public void TestCachingRemoveSilent() { Cache cache = new NativeCache(); cache.Add("key1", 123456); cache.Remove("key1"); Assert.AreEqual(cache.Get <int>("key1", 0), 0); }
public void TestCachingRemove() { Cache cache = new NativeCache(); cache.Add("key1", 123456); cache.Remove("key1"); cache.Get <int>("key1"); }
public void TestCachingExpiration() { Cache cache = new NativeCache(); cache.Add("entry", 123, TimeSpan.FromTicks(1)); Thread.Sleep(TimeSpan.FromSeconds(1)); cache.Get <int>("entry"); }
public void Test_IsKey_WithNoSuchKey() { var cache = new NativeCache <int>(3); cache.Put("b", 2); var result = cache.IsKey("a"); Assert.AreEqual(false, result); }
private Context(ILogger logger, MemoryCache memoryCache, DiskCache diskCache, NativeCache nativeCache, Dictionary <Type, Type> awaiters, Dictionary <Type, Type> mappers) { Logger = logger; MemoryCache = memoryCache; DiskCache = diskCache; NativeCache = nativeCache; awaiterTypes = awaiters; mapperTypes = mappers; }
public void Destroy() { memoryCache = null; diskCache?.Dispose(); diskCache = null; nativeCache?.Dispose(); nativeCache = null; Instance = null; }
public void TestComplexObject() { Cache cache = new NativeCache(); ComplexObject obj = new ComplexObject(5, 7); cache.Add("object", obj); ComplexObject obj2 = cache.Get <ComplexObject>("object"); Assert.AreEqual(obj.Foo(), obj2.Foo()); }
public void TestCachingPurge() { Cache cache = new NativeCache(); cache.Add("key1", 123456); cache.Add("key2", 678910); cache.Purge(); Assert.Catch <CacheEntryNotFoundException>(() => cache.Get <int>("key1")); Assert.Catch <CacheEntryNotFoundException>(() => cache.Get <int>("key2")); }
public void TestPutGetCount_7() { NativeCache <int> cache = new NativeCache <int>(4); cache.Put("3", 2); for (int i = 0; i < 4; i++) { if (cache.values[i] != 0) { Assert.AreEqual(2, cache.values[i]); Assert.AreEqual("3", cache.slots[i]); } } }
public void TestPutGetCount_2() { // Создание и заполнение кэша целочисленными значениями. // 4 значения с ключами от 0 до 3 включительно. // Все значения равные 1. // NativeCache <int> cache = new NativeCache <int>(4); for (int i = 0; i < cache.size; i++) { cache.Put("" + i, 1); } // Проверка на наличие элементов спомощью метода Get(). // Таким образом активируя счетчик запросов. // Assert.AreEqual(true, cache.Get("2") == 1); Assert.AreEqual(true, cache.Get("0") == 1); Assert.AreEqual(true, cache.Get("1") == 1); // Замещение одного элемента другим(новые ключ и значение). // Обнуление счетчика запроса по замещаемому ключу. // // Проверка на наличие ключей и их значений. // Ключ "2" подвергается меньшему количеству запросов для его дальнейшего замещения. // // cache.Put("new", 11); Assert.AreEqual(true, cache.Get("2") == 1); Assert.AreEqual(true, cache.Get("0") == 1); Assert.AreEqual(true, cache.Get("1") == 1); Assert.AreEqual(true, cache.Get("1") == 1); Assert.AreEqual(true, cache.Get("0") == 1); Assert.AreEqual(true, cache.Get("new") == 11); Assert.AreEqual(true, cache.Get("new") == 11); Assert.AreEqual(true, cache.Get("new") == 11); cache.Put("new2", 12); Assert.AreEqual(true, cache.Get("new") == 11); Assert.AreEqual(true, cache.Get("new2") == 12); Assert.AreEqual(true, cache.Get("0") == 1); Assert.AreEqual(true, cache.Get("1") == 1); }
public Builder(Context context) { logger = context.Logger; memoryCache = context.MemoryCache; diskCache = context.DiskCache; nativeCache = context.NativeCache; foreach (var p in context.awaiterTypes) { awaiterTypes[p.Key] = p.Value; } foreach (var p in context.mapperTypes) { mapperTypes[p.Key] = p.Value; } }
public void TestPutGetCount_3() { NativeCache <int> cache = new NativeCache <int>(4); for (int i = 0; i < cache.size; i++) { cache.Put("" + i, 1); } Assert.AreEqual(1, cache.Get("0")); Assert.AreEqual(1, cache.Get("1")); Assert.AreEqual(1, cache.Get("3")); cache.Put("new", 11); Assert.AreEqual(11, cache.Get("new")); Assert.AreEqual(1, cache.Get("0")); Assert.AreEqual(1, cache.Get("1")); Assert.AreEqual(1, cache.Get("3")); Assert.AreEqual(0, cache.Get("2")); }
public void TestZeroKeyRewrite() { var c = new NativeCache <string>(5); c.Put("0", "0"); c.Put("1", "1"); c.Put("2", "2"); c.Put("3", "3"); c.Put("4", "4"); c.Get("1"); c.Get("2"); c.Get("3"); c.Get("4"); c.Put("5", "5"); Assert.IsTrue(c.IsKey("5")); Assert.IsTrue(c.Get("5").Equals("5")); Assert.IsTrue(!c.IsKey("0")); }
public void TestPutGetCount_1() { NativeCache <int> cache = new NativeCache <int>(16); for (int i = 0; i < cache.size; i++) { cache.Put("" + i, 1); } Assert.AreEqual(1, cache.Get("0")); Assert.AreEqual(1, cache.Get("1")); Assert.AreEqual(1, cache.Get("2")); Assert.AreEqual(1, cache.Get("3")); Assert.AreEqual(1, cache.Get("4")); Assert.AreEqual(1, cache.Get("5")); Assert.AreEqual(1, cache.Get("7")); Assert.AreEqual(1, cache.Get("8")); Assert.AreEqual(1, cache.Get("9")); Assert.AreEqual(1, cache.Get("10")); Assert.AreEqual(1, cache.Get("11")); Assert.AreEqual(1, cache.Get("12")); Assert.AreEqual(1, cache.Get("13")); Assert.AreEqual(1, cache.Get("14")); Assert.AreEqual(1, cache.Get("15")); cache.Put("new", 11); for (int i = 0; i < cache.size; i++) { if (i == 6) { Assert.AreEqual(true, cache.Get("new") == 11); } else { Assert.AreEqual(true, cache.Get("" + i) == 1); } } }
public void TestCachingAddGet() { Cache cache = new NativeCache(); cache.Add("key1", 123456); cache.Add("key2", "Hallo Welt"); cache.Add("key3", 123.456); Assert.IsTrue(cache.Contains("key1")); Assert.IsTrue(cache.Contains("key2")); Assert.IsTrue(cache.Contains("key3")); Assert.IsFalse(cache.Contains("non-existing")); Assert.AreEqual(cache.Get <int>("key1"), 123456); Assert.AreEqual(cache.Get <string>("key2"), "Hallo Welt"); Assert.AreEqual(cache.Get <double>("key3"), 123.456); Assert.AreEqual(cache.Get <int>("non-existing", -1), -1); int val; Assert.IsTrue(cache.TryGet("key1", out val)); Assert.AreEqual(val, 123456); }
public void TestPutGetCount_6() { NativeCache <int> cache = new NativeCache <int>(4); for (int i = 0; i < cache.size; i++) { cache.Put("" + i, 0); } for (int i = 0; i < 6; i++) { cache.Get("0"); } for (int i = 0; i < 6; i++) { cache.Get("1"); } for (int i = 0; i < 6; i++) { cache.Get("2"); } for (int i = 0; i < 5; i++) { cache.Get("3"); } cache.Put("3a", 2); Assert.AreEqual(0, cache.Get("3")); Assert.AreEqual(0, cache.Get("0")); Assert.AreEqual(0, cache.Get("1")); Assert.AreEqual(0, cache.Get("2")); Assert.AreEqual(2, cache.Get("3a")); }
public void TestCreateCache() { Cache cache = new NativeCache(); }
public void TestPutGetCount_10() { NativeCache <int> cache = new NativeCache <int>(6); cache.Put("1", 1); cache.Put("2", 1); cache.Put("3", 1); cache.Put("4", 1); cache.Put("5", 1); cache.Put("6", 1); // Выполнение запросов 1-6 раз (Значение с ключом "1" - 1 раз, значение с ключом "6" - 6 раз) // Пара значение-ключ "1" = 1 будут иметь меньшее число запросов и подлежит вытеснению. // cache.Get("1"); cache.Get("2"); cache.Get("2"); cache.Get("3"); cache.Get("3"); cache.Get("3"); cache.Get("4"); cache.Get("4"); cache.Get("4"); cache.Get("4"); cache.Get("5"); cache.Get("5"); cache.Get("5"); cache.Get("5"); cache.Get("5"); cache.Get("6"); cache.Get("6"); cache.Get("6"); cache.Get("6"); cache.Get("6"); cache.Get("6"); // Добаление ключ-значение "11" - 2. // Происходит вытеснение менее востребованной пары "1" - 1. // // cache.Put("11", 2); Assert.AreEqual(0, cache.Get("1")); cache.Get("11"); cache.Get("11"); cache.Get("11"); // Добаление ключ-значение "12" - 2. // Происходит вытеснение менее востребованной пары "2" - 1. // // cache.Put("12", 2); Assert.AreEqual(0, cache.Get("2")); cache.Get("12"); cache.Get("12"); cache.Get("12"); Assert.AreEqual(2, cache.Get("11")); Assert.AreEqual(2, cache.Get("12")); Assert.AreEqual(1, cache.Get("3")); Assert.AreEqual(1, cache.Get("4")); Assert.AreEqual(1, cache.Get("5")); Assert.AreEqual(1, cache.Get("6")); }
public Builder WithNativeCache(NativeCache nativeCacheArg) { nativeCache = nativeCacheArg; return(this); }
public void TestsNativeCachePutAndGet() { var cache = new NativeCache <string>(3); Assert.AreEqual(3, cache.size); foreach (var slot in cache.slots) { Assert.IsNull(slot); } foreach (var hit in cache.hits) { Assert.AreEqual(0, hit); } cache.Put("1", "one"); foreach (var hit in cache.hits) { Assert.AreEqual(0, hit); } for (int i = 0; i < cache.size; i++) { if (i == 1) { Assert.AreEqual("1", cache.slots[1]); Assert.AreEqual("one", cache.values[1]); } else { Assert.AreEqual(null, cache.slots[i]); Assert.AreEqual(null, cache.values[i]); } } cache.Put("2", "two"); foreach (var hit in cache.hits) { Assert.AreEqual(0, hit); } for (int i = 0; i < cache.size; i++) { if (i == 1) { Assert.AreEqual("1", cache.slots[1]); Assert.AreEqual("one", cache.values[1]); } else if (i == 2) { Assert.AreEqual("2", cache.slots[2]); Assert.AreEqual("two", cache.values[2]); } else { Assert.IsNull(cache.slots[i]); Assert.IsNull(cache.values[i]); } } cache.Put("3", "three"); foreach (var hit in cache.hits) { Assert.AreEqual(0, hit); } for (int i = 0; i < cache.size; i++) { if (i == 0) { Assert.AreEqual("3", cache.slots[0]); Assert.AreEqual("three", cache.values[0]); } else if (i == 1) { Assert.AreEqual("1", cache.slots[1]); Assert.AreEqual("one", cache.values[1]); } else if (i == 2) { Assert.AreEqual("2", cache.slots[2]); Assert.AreEqual("two", cache.values[2]); } else { Assert.IsNull(cache.slots[i]); Assert.IsNull(cache.values[i]); } } var one = cache.Get("1"); Assert.AreEqual("one", one); var two = cache.Get("2"); Assert.AreEqual("two", two); var three = cache.Get("3"); Assert.AreEqual("three", three); foreach (var hit in cache.hits) { Assert.AreEqual(1, hit); } two = cache.Get("2"); Assert.AreEqual("two", two); three = cache.Get("3"); Assert.AreEqual("three", three); three = cache.Get("3"); Assert.AreEqual("three", three); Assert.AreEqual(3, cache.hits[0]); Assert.AreEqual(1, cache.hits[1]); Assert.AreEqual(2, cache.hits[2]); cache.Put("5", "five"); Assert.AreEqual(2, cache.HashFun("5")); for (int i = 0; i < cache.size; i++) { if (i == 0) { Assert.AreEqual("3", cache.slots[0]); Assert.AreEqual("three", cache.values[0]); } else if (i == 1) { Assert.AreEqual("5", cache.slots[1]); Assert.AreEqual("five", cache.values[1]); } else if (i == 2) { Assert.AreEqual("2", cache.slots[2]); Assert.AreEqual("two", cache.values[2]); } else { Assert.IsNull(cache.slots[i]); Assert.IsNull(cache.values[i]); } } Assert.AreEqual(3, cache.hits[0]); Assert.AreEqual(0, cache.hits[1]); Assert.AreEqual(2, cache.hits[2]); cache.Put("6", "six"); Assert.AreEqual(0, cache.HashFun("6")); for (int i = 0; i < cache.size; i++) { if (i == 0) { Assert.AreEqual("3", cache.slots[0]); Assert.AreEqual("three", cache.values[0]); } else if (i == 1) { Assert.AreEqual("6", cache.slots[1]); Assert.AreEqual("six", cache.values[1]); } else if (i == 2) { Assert.AreEqual("2", cache.slots[2]); Assert.AreEqual("two", cache.values[2]); } else { Assert.IsNull(cache.slots[i]); Assert.IsNull(cache.values[i]); } } Assert.AreEqual(3, cache.hits[0]); Assert.AreEqual(0, cache.hits[1]); Assert.AreEqual(2, cache.hits[2]); }