public async Task BuildingCollectionWith6969Elements_Reset_SwitchedCountFetchingCountAdjusted( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior) { // Arrange bool switched = false; int CountFetcher() => switched ? 9 : 6969; using var collection = SlidingWindowFactory.CreateCollectionWithCustomCountFetcher( pageLoadingBehavior, pageRemovalBehavior, fetchersKind, indexAccessBehavior, CountFetcher, 10, 10, 69); await collection.InitializationCompleted; var _ = collection[0]; await Task.Delay(50); switched = true; // Act collection.Reset(); await Task.Delay(50); var __ = collection[0]; await Task.Delay(50); // Assert Assert.Equal(0, collection[0]); Assert.Equal(9, collection.Count); }
internal static IDataVirtualizingCollection <int> CreateCollectionWithIncrementalIntegerWhereFetchersIgnorePageSize( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior, int count, int pageSize, IScheduler scheduler) { var pageLoadingBehaviorCollectionBuilder = DataVirtualizingCollectionBuilder.Build <int>( pageSize, new EventLoopScheduler(), scheduler); var pageHoldingBehaviorCollectionBuilder = StandardPageHoldingBehaviorCollectionBuilder( pageLoadingBehaviorCollectionBuilder, pageLoadingBehavior, (_, __) => - 1); var fetchersKindCollectionBuilder = StandardFetcherKindCollectionBuilder( pageHoldingBehaviorCollectionBuilder, pageRemovalBehavior, 10, 1); var indexAccessBehaviorCollectionBuilder = StandardIndexAccessBehaviorCollectionBuilder( fetchersKindCollectionBuilder, fetchersKind, (offset, pSize) => Enumerable .Range(offset, pageSize) // <--- This is different! pageSize instead of pSize! .ToArray(), () => count); var dataVirtualizingCollection = StandardDataVirtualizingCollection( indexAccessBehaviorCollectionBuilder, indexAccessBehavior, () => - 1); return(dataVirtualizingCollection); }
public void BuildingCollectionWith6969Elements_6001thEntry_6000( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior) { // Arrange using var collection = SlidingWindowFactory.CreateCollectionWithIncrementalInteger( pageLoadingBehavior, pageRemovalBehavior, fetchersKind, indexAccessBehavior, 6969, 100, 10, 6000); // Act + Assert Assert.Equal(6000, collection[0]); }
public void BuildingCollectionWherePageFetcherIgnoresGivenPageSize23_70thEntry_69( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior) { // Arrange using var collection = SlidingWindowFactory.CreateCollectionWithIncrementalIntegerWhereFetchersIgnorePageSize( pageLoadingBehavior, pageRemovalBehavior, fetchersKind, indexAccessBehavior, 6969, 23, 10, 60); // Act + Assert Assert.Equal(69, collection[9]); }
public void BuildingCollectionWith6969Elements_MinusFirstEntry_ThrowsIndexOutOfRangeException( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior) { // Arrange using var collection = SlidingWindowFactory.CreateCollectionWithIncrementalInteger( pageLoadingBehavior, pageRemovalBehavior, fetchersKind, indexAccessBehavior, 6969, 100, 10, 6959); // Act + Assert Assert.Throws <IndexOutOfRangeException>(() => collection[-1]); }
public async Task BuildingCollectionWith6969Elements_MinusFirstEntry_ThrowsIndexOutOfRangeException( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior) { // Arrange using var collection = DataVirtualizingCollectionFactory.CreateCollectionWithIncrementalInteger( pageLoadingBehavior, pageRemovalBehavior, fetchersKind, indexAccessBehavior, 6969, 100); await collection.InitializationCompleted; // Act + Assert Assert.Throws <IndexOutOfRangeException>(() => collection[-1]); }
internal static IDataVirtualizingCollection <T> CreateCollectionWithCustomPageFetchingLogic <T>( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior, int count, int pageSize, Func <int, int, T[]> pageFetchingLogic, T placeholder, IScheduler scheduler) { var pageLoadingBehaviorCollectionBuilder = DataVirtualizingCollectionBuilder.Build <T>( pageSize, new EventLoopScheduler(), scheduler); var pageHoldingBehaviorCollectionBuilder = StandardPageHoldingBehaviorCollectionBuilder( pageLoadingBehaviorCollectionBuilder, pageLoadingBehavior, (_, __) => placeholder); var fetchersKindCollectionBuilder = StandardFetcherKindCollectionBuilder( pageHoldingBehaviorCollectionBuilder, pageRemovalBehavior, 10, 1); var indexAccessBehaviorCollectionBuilder = StandardIndexAccessBehaviorCollectionBuilder( fetchersKindCollectionBuilder, fetchersKind, pageFetchingLogic, () => count); var dataVirtualizingCollection = StandardDataVirtualizingCollection( indexAccessBehaviorCollectionBuilder, indexAccessBehavior, () => placeholder); return(dataVirtualizingCollection); }
public async Task BuildingCollectionWith6969Elements_6001thEntry_6000( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior) { // Arrange var scheduler = new TestScheduler(); await using var collection = DataVirtualizingCollectionFactory.CreateCollectionWithIncrementalInteger( pageLoadingBehavior, pageRemovalBehavior, fetchersKind, indexAccessBehavior, 6969, 100, scheduler); // Act + Assert Assert.Equal(6000, collection[6000]); }
public async Task BuildingCollectionWherePageFetcherIgnoresGivenPageSize23_70thEntry_69( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior) { // Arrange var scheduler = new TestScheduler(); await using var collection = DataVirtualizingCollectionFactory.CreateCollectionWithIncrementalIntegerWhereFetchersIgnorePageSize( pageLoadingBehavior, pageRemovalBehavior, fetchersKind, indexAccessBehavior, 6969, 23, scheduler); // Act + Assert Assert.Equal(69, collection[69]); }
public async Task BuildingCollectionWith6969Elements_6970thEntry_ThrowsIndexOutOfRangeException( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior) { // Arrange var scheduler = new TestScheduler(); await using var collection = DataVirtualizingCollectionFactory.CreateCollectionWithIncrementalInteger( pageLoadingBehavior, pageRemovalBehavior, fetchersKind, indexAccessBehavior, 6969, 100, scheduler); // Act + Assert Assert.Throws <IndexOutOfRangeException>(() => collection[6969]); }
public async Task With6969ElementsAndPageSize1000_GetAnElementFromEachPage_NoneDisposed( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior) { // Arrange var scheduler = new TestScheduler(); var set = new ConcurrentBag <int>(); await using var collection = DataVirtualizingCollectionFactory.CreateCollectionWithCustomPageFetchingLogic( pageLoadingBehavior, pageRemovalBehavior, fetchersKind, indexAccessBehavior, 6969, 10, (offset, pSize) => Enumerable .Range(offset, pSize) .Select(i => Disposable.Create(() => set.Add(i))) .ToArray(), Disposable.Empty, scheduler); scheduler.AdvanceBy(20); Assert.True(collection.InitializationCompleted.IsCompletedSuccessfully); // Act for (var i = 0; i <= 6900; i += 100) { var _ = collection[i]; } await Task.Delay(TimeSpan.FromMilliseconds(50)).ConfigureAwait(false); scheduler.AdvanceBy(20); // Assert Assert.Empty(set); }
public async Task BuildingCollectionWith6969Elements_Reset_SwitchedPageFetching( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior) { // Arrange var scheduler = new TestScheduler(); bool switched = false; int[] PageFetcher(int offset, int size) => switched ? Enumerable.Range(offset + 1, size).ToArray() : Enumerable.Range(offset, size).ToArray(); await using var collection = SlidingWindowFactory.CreateCollectionWithCustomPageFetchingLogic( pageLoadingBehavior, pageRemovalBehavior, fetchersKind, indexAccessBehavior, 6969, 10, 10, 69, PageFetcher, -1, scheduler); var previous = collection[0]; switched = true; // Act collection.Reset(); // Assert Assert.Equal(69, previous); Assert.Equal(70, collection[0]); }
public async Task BuildingCollectionWith6969Elements_Reset_SwitchedCountFetchingCountAdjusted( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior) { // Arrange var scheduler = new TestScheduler(); bool switched = false; int CountFetcher() => switched ? 9 : 6969; await using var collection = SlidingWindowFactory.CreateCollectionWithCustomCountFetcher( pageLoadingBehavior, pageRemovalBehavior, fetchersKind, indexAccessBehavior, CountFetcher, 10, 10, 69, scheduler); var previous = collection[0]; switched = true; // Act collection.Reset(); // Assert Assert.Equal(69, previous); Assert.Equal(0, collection[0]); Assert.Equal(9, collection.Count); }
public async Task BuildingCollectionWith6969Elements_124thEntry_123( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior) { // Arrange var scheduler = new TestScheduler(); await using var collection = SlidingWindowFactory.CreateCollectionWithIncrementalInteger( pageLoadingBehavior, pageRemovalBehavior, fetchersKind, indexAccessBehavior, 6969, 100, 10, 120, scheduler); // Act + Assert Assert.Equal(123, collection[3]); }
public void BuildingCollectionWith6969Elements_Offset69SlidingRight_Offset70( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior) { // Arrange using var collection = SlidingWindowFactory.CreateCollectionWithIncrementalInteger( pageLoadingBehavior, pageRemovalBehavior, fetchersKind, indexAccessBehavior, 6969, 20, 10, 69); // Act collection.SlideRight(); // Assert Assert.Equal(70, collection[0]); }
public void BuildingCollectionWith6969Elements_Reset_NothingChanged( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior) { // Arrange using var collection = SlidingWindowFactory.CreateCollectionWithIncrementalInteger( pageLoadingBehavior, pageRemovalBehavior, fetchersKind, indexAccessBehavior, 6969, 10, 10, 69); // Act collection.Reset(); // Assert Assert.Equal(69, collection[0]); }
public async Task With69ElementsAndPageSize10_GetAnElementFromEachPageDisposeCollection_AllDisposed( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior) { // Arrange const int expected = 69; var set = new ConcurrentBag <int>(); var collection = DataVirtualizingCollectionFactory.CreateCollectionWithCustomPageFetchingLogic( pageLoadingBehavior, pageRemovalBehavior, fetchersKind, indexAccessBehavior, expected, 10, (offset, pSize) => Enumerable .Range(offset, pSize) .Select(i => Disposable.Create(() => set.Add(i))) .ToArray(), Disposable.Empty); await collection.InitializationCompleted; // Act for (var i = 0; i <= expected; i += 10) { var _ = collection[i]; await Task.Delay(50); } collection.Dispose(); await Task.Delay(50); // Assert Assert.Equal(expected, set.Count); }
public async Task BuildingCollectionWith6969Elements_MinusFirstEntry_ThrowsIndexOutOfRangeException( PageLoadingBehavior pageLoadingBehavior, PageRemovalBehavior pageRemovalBehavior, FetchersKind fetchersKind, IndexAccessBehavior indexAccessBehavior) { // Arrange var scheduler = new TestScheduler(); await using var collection = DataVirtualizingCollectionFactory.CreateCollectionWithIncrementalInteger( pageLoadingBehavior, pageRemovalBehavior, fetchersKind, indexAccessBehavior, 6969, 100, scheduler); scheduler.AdvanceBy(20); Assert.True(collection.InitializationCompleted.IsCompletedSuccessfully); // Act + Assert Assert.Throws <IndexOutOfRangeException>(() => collection[-1]); }