public void Can_reset_expiration() { var expired = new ManualResetEvent(false); var changed = new ManualResetEvent(false); var k = 42; var v = "foo"; var ttl = TimeSpan.FromSeconds(2); ExpiringDictionary <int, string> .Entry entry = null; var set = new ExpiringDictionary <int, string>(TaskTimerFactory.Current); set.EntryExpired += (s, e) => { entry = e.Entry; expired.Set(); }; set.CollectionChanged += (s, e) => changed.Set(); set.Set(k, v, ttl); Assert.IsTrue(changed.WaitOne(500)); changed.Reset(); Thread.Sleep(500); Assert.IsFalse(expired.WaitOne(500)); var oldExpire = set[k].When; set.RefreshExpiration(k); Assert.Greater(set[k].When.WithoutMilliseconds(), oldExpire.WithoutMilliseconds()); Assert.IsTrue(changed.WaitOne(5000)); Assert.IsTrue(expired.WaitOne(5000)); }
public void Can_reset_expiration() { var expired = new ManualResetEvent(false); var changed = new ManualResetEvent(false); var k = 42; var v = "foo"; var ttl = TimeSpan.FromSeconds(2); ExpiringDictionary<int, string>.Entry entry = null; var set = new ExpiringDictionary<int, string>(TaskTimerFactory.Current); set.EntryExpired += (s, e) => { entry = e.Entry; expired.Set(); }; set.CollectionChanged += (s, e) => changed.Set(); set.Set(k, v, ttl); Assert.IsTrue(changed.WaitOne(500)); changed.Reset(); Thread.Sleep(500); Assert.IsFalse(expired.WaitOne(500)); var oldExpire = set[k].When; set.RefreshExpiration(k); Assert.Greater(set[k].When.WithoutMilliseconds(), oldExpire.WithoutMilliseconds()); Assert.IsTrue(changed.WaitOne(5000)); Assert.IsTrue(expired.WaitOne(5000)); }