public void GetOrAddGroup() { var strg = new MyCacheStorage(); var cache = new CacheManager(strg); Action act = () => { var res = cache.Get("a1", () => "v1", typeof(Meal)); var res2 = cache.Get("a2", () => "v2", typeof(Meal)); var res3 = cache.Get("a3", () => "v3", typeof(Meal)); Assert.AreEqual("v1", res); Assert.AreEqual("v2", res2); Assert.AreEqual("v3", res3); }; Parallel.ForEach(Enumerable.Range(0, 1000), i => { Console.WriteLine(i); if (i < 900 && i % 3 == 0) { cache.RemoveGroup(typeof(Meal)); } else { act(); } }); Console.WriteLine("end parallel exec"); cache.RemoveGroup(typeof(Meal)); Assert.AreEqual(0, strg.Data.Count); }
public void GetOrAdd() { var strg = new MyCacheStorage(); var cache = new CacheManager(strg); Action act = () => { var res = cache.Get("a1", () => "v1"); Assert.AreEqual("v1", res); }; Parallel.ForEach(Enumerable.Range(0, 1000), i => { act(); }); Assert.AreEqual(1, strg.Data.Count); object val; strg.Data.TryGetValue("a1", out val); Assert.AreEqual("v1", val); }
public void RemoveGroupOnChangeAction() { var strg = new MyCacheStorage(); var cache = new CacheManager(strg); cache.Get("a1", () => "v1", typeof(Meal)); cache.Get("a2", () => "v2", typeof(Dinner)); var res21 = cache.Get("a2", () => "v3", typeof(Dinner)); Assert.AreEqual("v2", res21); cache.ChangeAction <Meal>(ChangeType.Edit); var res3 = cache.Get("a2", () => "v3", typeof(Dinner)); Assert.AreEqual("v3", res3); }