public void Clearing_set_releases_all_items()
        {
            var changed = false;
            var ttl     = 10.Seconds();
            var set     = new ExpiringHashSet <string>(TaskTimerFactory.Current);

            set.SetOrUpdate("a", ttl);
            set.SetOrUpdate("b", ttl);
            set.SetOrUpdate("v", ttl);
            set.CollectionChanged += (s, e) => changed = true;
            Assert.AreEqual(3, set.Count());
            Assert.IsFalse(changed);
            set.Clear();
            Assert.AreEqual(0, set.Count());
            Assert.IsTrue(changed);
        }
        public void New_item_with_more_recent_expiration_will_fire_at_expected_time()
        {
            var expired = new ManualResetEvent(false);
            var entries = new List <int>();
            var set     = new ExpiringHashSet <int>(TaskTimerFactory.Current);

            set.EntryExpired += (s, e) => { entries.Add(e.Entry.Value); expired.Set(); };
            var n = 1000;

            for (var i = 0; i < n; i++)
            {
                set.SetOrUpdate(i, TimeSpan.FromMinutes(10));
            }
            set.SetOrUpdate(100000, TimeSpan.FromSeconds(2));
            Assert.IsTrue(expired.WaitOne(4000));
            Assert.AreEqual(1, entries.Count);
            Assert.AreEqual(n, set.Count());
        }
 public void New_item_with_more_recent_expiration_will_fire_at_expected_time()
 {
     var expired = new ManualResetEvent(false);
     var entries = new List<int>();
     var set = new ExpiringHashSet<int>(TaskTimerFactory.Current);
     set.EntryExpired += (s, e) => { entries.Add(e.Entry.Value); expired.Set(); };
     var n = 1000;
     for(var i = 0; i < n; i++) {
         set.SetExpiration(i, TimeSpan.FromMinutes(10));
     }
     set.SetExpiration(100000, TimeSpan.FromSeconds(2));
     Assert.IsTrue(expired.WaitOne(4000));
     Assert.AreEqual(1, entries.Count);
     Assert.AreEqual(n, set.Count());
 }
 public void Clearing_set_releases_all_items()
 {
     var changed = false;
     var ttl = 10.Seconds();
     var set = new ExpiringHashSet<string>(TaskTimerFactory.Current);
     set.SetExpiration("a", ttl);
     set.SetExpiration("b", ttl);
     set.SetExpiration("v", ttl);
     set.CollectionChanged += (s, e) => changed = true;
     Assert.AreEqual(3, set.Count());
     Assert.IsFalse(changed);
     set.Clear();
     Assert.AreEqual(0, set.Count());
     Assert.IsTrue(changed);
 }