コード例 #1
0
        public void SetExpiration_does_not_create_item()
        {
            var k   = 42;
            var ttl = TimeSpan.FromSeconds(10);
            var set = new ExpiringDictionary <int, string>(TaskTimerFactory.Current);

            Assert.IsFalse(set.SetExpiration(k, ttl));
        }
コード例 #2
0
        public void SetExpiration_updates_expiration_time()
        {
            var k    = 42;
            var v    = "foo";
            var ttl  = TimeSpan.FromSeconds(10);
            var ttl2 = TimeSpan.FromSeconds(50);
            var set  = new ExpiringDictionary <int, string>(TaskTimerFactory.Current);

            set.Set(k, v, ttl);
            Assert.IsTrue(set.SetExpiration(k, ttl2));
            Assert.AreEqual(ttl2.WithoutMilliseconds(), set[k].TTL.WithoutMilliseconds());
        }
コード例 #3
0
        public void Can_set_ttl_on_existing_item()
        {
            var expired = new ManualResetEvent(false);
            var changed = new ManualResetEvent(false);
            var k       = 42;
            var v       = "foo";
            var ttl     = TimeSpan.FromSeconds(10);

            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.Reset();
            Assert.IsFalse(expired.WaitOne(2000));
            set.SetExpiration(k, TimeSpan.FromSeconds(1));
            Assert.IsTrue(changed.WaitOne(5000));
            Assert.IsTrue(expired.WaitOne(5000));
        }
コード例 #4
0
 public void SetExpiration_updates_expiration_time()
 {
     var k = 42;
     var v = "foo";
     var ttl = TimeSpan.FromSeconds(10);
     var ttl2 = TimeSpan.FromSeconds(50);
     var set = new ExpiringDictionary<int, string>(TaskTimerFactory.Current);
     set.Set(k, v, ttl);
     Assert.IsTrue(set.SetExpiration(k, ttl2));
     Assert.AreEqual(ttl2.WithoutMilliseconds(), set[k].TTL.WithoutMilliseconds());
 }
コード例 #5
0
 public void SetExpiration_does_not_create_item()
 {
     var k = 42;
     var ttl = TimeSpan.FromSeconds(10);
     var set = new ExpiringDictionary<int, string>(TaskTimerFactory.Current);
     Assert.IsFalse(set.SetExpiration(k, ttl));
 }
コード例 #6
0
 public void Can_set_ttl_on_existing_item()
 {
     var expired = new ManualResetEvent(false);
     var changed = new ManualResetEvent(false);
     var k = 42;
     var v = "foo";
     var ttl = TimeSpan.FromSeconds(10);
     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.Reset();
     Assert.IsFalse(expired.WaitOne(2000));
     set.SetExpiration(k, TimeSpan.FromSeconds(1));
     Assert.IsTrue(changed.WaitOne(5000));
     Assert.IsTrue(expired.WaitOne(5000));
 }