async Task Scenario_Cas_Simple() { var item = new POCOObject { Id = Guid.NewGuid() }; var key = Guid.NewGuid().ToString(); long checkValue = 0; var cacheItem = await target.GetWithCheckAsync(key); Assert.IsNotNull(cacheItem); Assert.IsNull(cacheItem.Result); Assert.AreEqual(0, cacheItem.CheckValue); await target.SetAsync(key, item); cacheItem = await target.GetWithCheckAsync(key); Assert.AreEqual(item, cacheItem.Result); Assert.AreNotEqual(0, cacheItem.CheckValue); checkValue = cacheItem.CheckValue; var setResult = await target.SetAsync(key, 1, item); Assert.IsFalse(setResult); setResult = await target.SetAsync(key, checkValue, item); Assert.IsTrue(setResult); var removed = await target.RemoveAsync(key); Assert.IsTrue(removed); cacheItem = await target.GetWithCheckAsync(key); Assert.IsNotNull(cacheItem); Assert.IsNull(cacheItem.Result); Assert.AreEqual(0, cacheItem.CheckValue); }
async Task Scenario_Simple() { var item = new POCOObject { Id = Guid.NewGuid() }; var key = keyPrefix + Guid.NewGuid().ToString(); var cacheItem = await target.GetAsync(key); Assert.IsNull(cacheItem); await target.SetAsync(key, item); cacheItem = await target.GetAsync(key); Assert.AreEqual(item, cacheItem); var removed = await target.RemoveAsync(key); Assert.IsTrue(removed); cacheItem = await target.GetAsync(key); Assert.IsNull(cacheItem); }
void Scenario_NonAsync_Simple() { var item = new POCOObject { Id = Guid.NewGuid() }; var key = keyPrefix + Guid.NewGuid().ToString(); var cacheItem = target.Get(key); Assert.IsNull(cacheItem); target.Set(key, item); cacheItem = target.Get(key); Assert.AreEqual(item, cacheItem); var removed = target.Remove(key); Assert.IsTrue(removed); cacheItem = target.Get(key); Assert.IsNull(cacheItem); }
void Scenario_Multiple_NonAsync_Simple() { var item1 = new POCOObject { Id = Guid.NewGuid() }; var item2 = new POCOObject { Id = Guid.NewGuid() }; var key1 = keyPrefix + Guid.NewGuid().ToString(); var key2 = keyPrefix + Guid.NewGuid().ToString(); var key3 = keyPrefix + Guid.NewGuid().ToString(); var keys = new[] { key1, key2, key3 }; var items = target.Get(keys); Assert.Count(3, items); Assert.ForAll(items, a => a.Value == null); target.Set(key1, item1); target.Set(key2, item2); items = target.Get(keys); Assert.Count(3, items); Assert.IsNull(items.FirstOrDefault(a => a.Key == key3).Value); Assert.AreEqual(item1, items.FirstOrDefault(a => a.Key == key1).Value); Assert.AreEqual(item2, items.FirstOrDefault(a => a.Key == key2).Value); }
async Task Scenario_DeepObject() { var item = new POCOObject { Id = Guid.NewGuid(), Item = new AnotherPOCOObject { Id = Guid.NewGuid() }, Items = new List<AnotherPOCOObject> { new AnotherPOCOObject { Id = Guid.NewGuid() } }, Name = "Hello" }; var key = keyPrefix + Guid.NewGuid().ToString(); var cacheItem = await target.GetAsync(key); Assert.IsNull(cacheItem); await target.SetAsync(key, item); cacheItem = await target.GetAsync(key); Assert.AreEqual(item, cacheItem); Assert.AreEqual(item.Name, cacheItem.Name); Assert.AreEqual(item.Item, cacheItem.Item); Assert.AreEqual(item.Items.First(), cacheItem.Items.First()); }
async Task Scenario_Multiple_Load() { var items = new List<POCOObject>(); for (var i = 0; i < 5000; i++) { var item = new POCOObject { Id = Guid.NewGuid() }; items.Add(item); await target.SetAsync(keyPrefix + item.Id.ToString(), item); Assert.AreEqual(item, await target.GetAsync(keyPrefix + item.Id.ToString())); } var keys = items.Select(a => keyPrefix + a.Id.ToString()).ToArray(); var startAt = DateTime.Now; var result = await target.GetAsync(keys); var endAt = DateTime.Now; Assert.Count(items.Count, result); Assert.AreApproximatelyEqual(endAt - startAt, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1)); Assert.ForAll(result, a => a.Value != null); Assert.ForAll(result, a => items.FirstOrDefault(b => b.Id == a.Value.Id) != null); }
async Task Scenario_Cached_TimeElapsed_NotCached() { var item = new POCOObject { Id = Guid.NewGuid() }; var key = keyPrefix + Guid.NewGuid().ToString(); await target.SetAsync(key, item, TimeSpan.FromSeconds(1)); Thread.Sleep(TimeSpan.FromSeconds(2)); var cacheItem = await target.GetAsync(key); Assert.IsNull(cacheItem); }