public void Can_access_dictionary_during_expiration_event() { var expired = new ManualResetEvent(false); var changed = new ManualResetEvent(false); var k = 42; var v = "foo"; var ttl = TimeSpan.FromSeconds(1); ExpiringDictionary <int, string> .Entry entry = null; var set = new ExpiringDictionary <int, string>(TaskTimerFactory.Current); set.EntryExpired += (s, e) => { entry = e.Entry; set.Delete(e.Entry.Key); expired.Set(); }; set.CollectionChanged += (s, e) => changed.Set(); set.Set(k, v, ttl); Assert.IsTrue(changed.WaitOne(5000)); Assert.IsTrue(expired.WaitOne(5000)); Assert.AreEqual(k, entry.Key); Assert.AreEqual(v, entry.Value); Assert.AreEqual(ttl.WithoutMilliseconds(), entry.TTL.WithoutMilliseconds()); Assert.IsNull(set[k]); }
public void Can_remove_expiration() { var expired = new ManualResetEvent(false); var changed = new ManualResetEvent(false); var k = 42; var v = "foo"; var ttl = TimeSpan.FromSeconds(1); 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(2000)); changed.Set(); set.Delete(k); Assert.IsTrue(changed.WaitOne(2000)); Assert.IsFalse(expired.WaitOne(2000)); }
public void Can_remove_expiration() { var expired = new ManualResetEvent(false); var changed = new ManualResetEvent(false); var k = 42; var v = "foo"; var ttl = TimeSpan.FromSeconds(1); 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(2000)); changed.Set(); set.Delete(k); Assert.IsTrue(changed.WaitOne(2000)); Assert.IsFalse(expired.WaitOne(2000)); }
public void Can_access_dictionary_during_expiration_event() { var expired = new ManualResetEvent(false); var changed = new ManualResetEvent(false); var k = 42; var v = "foo"; var ttl = TimeSpan.FromSeconds(1); ExpiringDictionary<int, string>.Entry entry = null; var set = new ExpiringDictionary<int, string>(TaskTimerFactory.Current); set.EntryExpired += (s, e) => { entry = e.Entry; set.Delete(e.Entry.Key); expired.Set(); }; set.CollectionChanged += (s, e) => changed.Set(); set.Set(k, v, ttl); Assert.IsTrue(changed.WaitOne(5000)); Assert.IsTrue(expired.WaitOne(5000)); Assert.AreEqual(k, entry.Key); Assert.AreEqual(v, entry.Value); Assert.AreEqual(ttl.WithoutMilliseconds(), entry.TTL.WithoutMilliseconds()); Assert.IsNull(set[k]); }