示例#1
0
        public void ExpiringList_Will_Check_Items_For_Expiry_After_MillisecondsBetweenChecks_Has_Passed()
        {
            using (var list = new ExpiringList <string>(1, 10)) {
                list.Add("Hello");
                HeartbeatTick();

                _Clock.AddMilliseconds(11);
                HeartbeatTick();
                Assert.AreEqual(0, list.Count);
            }
        }
示例#2
0
        public void ExpiringList_Snapshot_Does_Not_Refresh_Items()
        {
            using (var list = new ExpiringList <string>(10, 1)) {
                list.Add("1");

                _Clock.AddMilliseconds(10);
                list.Snapshot();
                HeartbeatTick();

                Assert.AreEqual(0, list.Count);
            }
        }
示例#3
0
        public void TestInitialise()
        {
            _OriginalFactory = Factory.TakeSnapshot();
            _Clock           = new ClockMock();
            Factory.Singleton.RegisterInstance <IClock>(_Clock.Object);

            _HeartbeatService = TestUtilities.CreateMockSingleton <IHeartbeatService>();

            _List = new ExpiringList <string>(200, 100);
            _CountChangedCallCount     = 0;
            _List.CountChangedDelegate = CountChangedHandler;
        }
示例#4
0
        public void ExpiringList_FindAll_Does_Not_Refresh_Matching_Items()
        {
            using (var list = new ExpiringList <string>(10, 10)) {
                list.Add("1");

                _Clock.AddMilliseconds(10);
                Assert.AreEqual(1, list.FindAll(r => r == "1").Count);

                HeartbeatTick();
                Assert.AreEqual(0, list.Count);
            }
        }
示例#5
0
        public void ExpiringList_FindAndRefresh_Returns_First_Matching_Item_After_Refreshing_It()
        {
            using (var list = new ExpiringList <string>(10, 10)) {
                list.Add("1");

                _Clock.AddMilliseconds(10);
                Assert.AreEqual("1", list.FindAndRefresh(r => r == "1"));

                HeartbeatTick();
                Assert.AreEqual(1, list.Count);
            }
        }
示例#6
0
        public void ExpiringList_Will_Expire_Items_After_ExpireMilliseconds_Has_Passed()
        {
            using (var list = new ExpiringList <string>(10, 1)) {
                list.Add("Hello");
                HeartbeatTick();

                _Clock.AddMilliseconds(11);
                HeartbeatTick();

                Assert.AreEqual(0, list.Count);
            }
        }
示例#7
0
        public void ExpiringList_RefreshAll_Refreshes_All_Items()
        {
            using (var list = new ExpiringList <string>(10, 10)) {
                list.Add("1");
                list.Add("2");

                _Clock.AddMilliseconds(10);
                list.RefreshAll();

                HeartbeatTick();
                Assert.AreEqual(2, list.Count);
            }
        }
示例#8
0
        public void ExpiringList_FindAll_Returns_All_Matching_Items()
        {
            using (var list = new ExpiringList <string>(10, 10)) {
                list.Add("1a");
                list.Add("1b");
                list.Add("2a");

                var matches = list.FindAll(r => r.StartsWith("1"));
                Assert.AreEqual(2, matches.Count);
                Assert.IsTrue(matches.Contains("1a"));
                Assert.IsTrue(matches.Contains("1b"));
            }
        }
示例#9
0
        public void ExpiringList_AddRangeOrRefresh_Adds_Or_Refreshes_A_Range_Of_Items()
        {
            using (var list = new ExpiringList <string>(10, 10)) {
                list.AddRange(new string[] { "1", "2" });
                HeartbeatTick();

                _Clock.AddMilliseconds(10);
                list.AddRange(new string[] { "2", "3" });
                HeartbeatTick();

                Assert.AreEqual(2, list.Count);
                Assert.AreEqual(null, list.Find(r => r == "1"));
                Assert.AreEqual("2", list.Find(r => r == "2"));
                Assert.AreEqual("3", list.Find(r => r == "3"));
            }
        }
示例#10
0
        public void ExpiringList_SnapshotAndRefresh_Refreshes_Items()
        {
            using (var list = new ExpiringList <string>(10, 1)) {
                list.Add("1");
                list.Add("2");

                _Clock.AddMilliseconds(10);
                var snapshot = list.SnapshotAndRefresh();
                HeartbeatTick();

                Assert.AreEqual(2, list.Count);

                Assert.AreEqual(2, snapshot.Length);
                Assert.IsTrue(snapshot.Contains("1"));
                Assert.IsTrue(snapshot.Contains("2"));
            }
        }
示例#11
0
        public void ExpiringList_FindAllAndRefresh_Refreshes_Matching_Items()
        {
            using (var list = new ExpiringList <string>(10, 10)) {
                list.Add("1a");
                list.Add("1b");
                list.Add("2a");

                _Clock.AddMilliseconds(10);
                var matches = list.FindAllAndRefresh(r => r.StartsWith("1"));
                Assert.AreEqual(2, matches.Count);
                Assert.IsTrue(matches.Contains("1a"));
                Assert.IsTrue(matches.Contains("1b"));

                HeartbeatTick();
                Assert.AreEqual(2, list.Count);
            }
        }