Esempio n. 1
0
        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]);
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
 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));
 }
Esempio n. 4
0
 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]);
 }