コード例 #1
0
        public void PruneWhenLimitIsNotExceeded()
        {
            var ui = new UserIndex()
                     .UpdateTimestamp("user1", UnixMillisecondTime.OfMillis(1000))
                     .UpdateTimestamp("user2", UnixMillisecondTime.OfMillis(2000));

            Assert.Same(ui, ui.Prune(3, out var removed1));
            Assert.Empty(removed1);

            Assert.Same(ui, ui.Prune(2, out var removed2));
            Assert.Empty(removed2);
        }
コード例 #2
0
        public void PruneRemovesLeastRecentUsers()
        {
            var ui = new UserIndex()
                     .UpdateTimestamp("user1", UnixMillisecondTime.OfMillis(1000))
                     .UpdateTimestamp("user2", UnixMillisecondTime.OfMillis(2000))
                     .UpdateTimestamp("user3", UnixMillisecondTime.OfMillis(1111)) // deliberately out of order
                     .UpdateTimestamp("user4", UnixMillisecondTime.OfMillis(3000))
                     .UpdateTimestamp("user5", UnixMillisecondTime.OfMillis(4000));

            var ui1 = ui.Prune(3, out var removed);

            Assert.Equal(ImmutableList.Create("user1", "user3"), removed);
            Assert.Collection(ui1.Data,
                              AssertEntry("user2", 2000),
                              AssertEntry("user4", 3000),
                              AssertEntry("user5", 4000));
        }