using System; using System.Threading; using System.Threading.Tasks; using Kruzya.TelegramBot.Core.Cache; using NUnit.Framework; namespace Kruzya.TelegramBot.Core.Tests { public class MemoryCache { [Test] public void GetSetItem() { var cache = new MemoryCache(); int id; Assert.IsFalse(cache.TryGetValue("user", out id), "GetValue() returned something"); id = 5; cache.SetValue("user", id); id = 10; Assert.IsTrue(cache.TryGetValue("user", out id), "GetValue() doesn't returned any value"); Assert.IsTrue(id == 5, "GetValue() returned don't expected value"); } [Test] public void TimeToLive() { var cache = new MemoryCache(); cache.SetValue("user", 5, 1); cache.SetValue("admin", 10, 2); cache.SetValue("manager", 15, Timeout.Infinite); int id; Thread.Sleep(TimeSpan.FromSeconds(1)); Assert.IsFalse(cache.TryGetValue("user", out id), "GetValue() returned expired entry (user)."); Assert.IsTrue(cache.TryGetValue("admin", out id), "GetValue() doesn't returned live entry."); Assert.IsTrue(id == 10, "GetValue() returned unexpected entry."); Thread.Sleep(TimeSpan.FromSeconds(1)); Assert.IsFalse(cache.TryGetValue("admin", out id), "GetValue() returned expired entry (admin)."); Assert.IsTrue(cache.TryGetValue("manager", out id), "GetValue() doesn't returned live entry."); Assert.IsTrue(id == 15, "GetValue() returned unexpected entry."); } } }