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); }
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)); }