public void CreatePageLimit10RemovalCount1_Request11Pages_FirstPageRemovalRequest(bool isPreloading) { // Arrange var timestampCount = 0; var timestampProvider = Substitute.For <ITimestampProvider>(); timestampProvider.Now.Returns(_ => DateTime.MinValue + TimeSpan.FromTicks(1) * timestampCount++); var requestedRemovals = new List <int>(); using var pageRequests = new Subject <(int PageKey, int PageIndex)>(); // Act using var subscription = LeastRecentlyUsedPageRemoval .Create( 10, 1, isPreloading, timestampProvider) (pageRequests) .Subscribe(removals => requestedRemovals.AddRange(removals)); for (var i = 0; i < 11; i++) { pageRequests.OnNext((i, 0)); } // Assert Assert.Collection( requestedRemovals, pageKey => Assert.Equal(0, pageKey)); }
public void CreatePageLimit10RemovalCount1_Request10PagesAndIterateThemAgain_NeverRequestsRemoval(bool isPreloading) { // Arrange var timestampCount = 0; var timestampProvider = Substitute.For <ITimestampProvider>(); timestampProvider.Now.Returns(_ => DateTime.MinValue + TimeSpan.FromTicks(1) * timestampCount++); var requestedRemovals = new List <int>(); using var pageRequests = new Subject <(int PageKey, int PageIndex)>(); // Act using var subscription = LeastRecentlyUsedPageRemoval .Create( 10, 1, isPreloading, timestampProvider) (pageRequests) .Subscribe(removals => requestedRemovals.AddRange(removals)); for (var i = 0; i < 10; i++) { pageRequests.OnNext((i, 0)); } for (var i = 9; i >= 0; i--) { pageRequests.OnNext((i, 0)); } // Assert Assert.Empty(requestedRemovals); }