Exemple #1
0
        public void With6969ElementsAndPageSize100_GetAnElementFromEachPage_NoneDisposed(
            PageLoadingBehavior pageLoadingBehavior,
            PageRemovalBehavior pageRemovalBehavior,
            FetchersKind fetchersKind,
            IndexAccessBehavior indexAccessBehavior)
        {
            // Arrange
            var set = new ConcurrentBag <int>();

            using var collection = DataVirtualizingCollectionFactory.CreateCollectionWithCustomPageFetchingLogic(
                      pageLoadingBehavior,
                      pageRemovalBehavior,
                      fetchersKind,
                      indexAccessBehavior,
                      6969,
                      100,
                      (offset, pSize) =>
                      Enumerable
                      .Range(offset, pSize)
                      .Select(i => Disposable.Create(() => set.Add(i)))
                      .ToArray(),
                      Disposable.Empty);

            // Act
            for (var i = 0; i <= 6900; i += 100)
            {
                var _ = collection[i];
            }

            // Assert
            Assert.Empty(set);
        }
Exemple #2
0
        public void 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);

            // Act
            for (var i = 0; i <= expected; i += 10)
            {
                var _ = collection[i];
            }
            collection.Dispose();

            Thread.Sleep(500);

            // Assert
            Assert.Equal(expected, set.Count);
        }
        public async Task BuildingCollectionWherePageFetcherIgnoresGivenPageSize23_70thEntry_69(
            PageLoadingBehavior pageLoadingBehavior,
            PageRemovalBehavior pageRemovalBehavior,
            FetchersKind fetchersKind,
            IndexAccessBehavior indexAccessBehavior)
        {
            // Arrange
            using var collection = DataVirtualizingCollectionFactory.CreateCollectionWithIncrementalIntegerWhereFetchersIgnorePageSize(
                      pageLoadingBehavior,
                      pageRemovalBehavior,
                      fetchersKind,
                      indexAccessBehavior,
                      6969,
                      23);

            await collection.InitializationCompleted;

            // Act
            var placeholder = collection[69];
            await Task.Delay(50);

            // Assert
            Assert.Equal(-1, placeholder);
            Assert.Equal(69, collection[69]);
        }
        public async Task BuildingCollectionWith6969Elements_124thEntry_123(
            PageLoadingBehavior pageLoadingBehavior,
            PageRemovalBehavior pageRemovalBehavior,
            FetchersKind fetchersKind,
            IndexAccessBehavior indexAccessBehavior)
        {
            // Arrange
            using var collection = DataVirtualizingCollectionFactory.CreateCollectionWithIncrementalInteger(
                      pageLoadingBehavior,
                      pageRemovalBehavior,
                      fetchersKind,
                      indexAccessBehavior,
                      6969,
                      100);

            await collection.InitializationCompleted;

            // Act
            var placeholder = collection[123];
            await Task.Delay(50);

            // Assert
            Assert.Equal(-1, placeholder);
            Assert.Equal(123, collection[123]);
        }
        public async Task BuildingCollectionWith6969Elements_124thEntry_123(
            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
            var placeholder = collection[123];
            await Task.Delay(TimeSpan.FromMilliseconds(50)).ConfigureAwait(false);

            scheduler.AdvanceBy(20);

            // Assert
            Assert.Equal(-1, placeholder);
            Assert.Equal(123, collection[123]);
        }
        public async Task With69ElementsAndPageSize10_GetAnElementFromEachPageDisposeCollection_AllDisposed(
            PageLoadingBehavior pageLoadingBehavior,
            PageRemovalBehavior pageRemovalBehavior,
            FetchersKind fetchersKind,
            IndexAccessBehavior indexAccessBehavior)
        {
            // Arrange
            var       scheduler  = new TestScheduler();
            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,
                scheduler);

            scheduler.AdvanceBy(20);
            Assert.True(collection.InitializationCompleted.IsCompletedSuccessfully);

            // Act
            for (var i = 0; i <= expected; i += 10)
            {
                var _ = collection[i];
                await Task.Delay(TimeSpan.FromMilliseconds(50)).ConfigureAwait(false);

                scheduler.AdvanceBy(20);
            }
            await collection.DisposeAsync();

            await Task.Delay(TimeSpan.FromMilliseconds(50)).ConfigureAwait(false);

            scheduler.AdvanceBy(20);

            // Assert
            Assert.Equal(expected, set.Count);
        }
        public void BuildingCollectionWith6969Elements_6001thEntry_6000(
            PageLoadingBehavior pageLoadingBehavior,
            PageRemovalBehavior pageRemovalBehavior,
            FetchersKind fetchersKind,
            IndexAccessBehavior indexAccessBehavior)
        {
            // Arrange
            using var collection = DataVirtualizingCollectionFactory.CreateCollectionWithIncrementalInteger(
                      pageLoadingBehavior,
                      pageRemovalBehavior,
                      fetchersKind,
                      indexAccessBehavior,
                      6969,
                      100);

            // Act + Assert
            Assert.Equal(6000, collection[6000]);
        }
        public void BuildingCollectionWherePageFetcherIgnoresGivenPageSize23_70thEntry_69(
            PageLoadingBehavior pageLoadingBehavior,
            PageRemovalBehavior pageRemovalBehavior,
            FetchersKind fetchersKind,
            IndexAccessBehavior indexAccessBehavior)
        {
            // Arrange
            using var collection = DataVirtualizingCollectionFactory.CreateCollectionWithIncrementalIntegerWhereFetchersIgnorePageSize(
                      pageLoadingBehavior,
                      pageRemovalBehavior,
                      fetchersKind,
                      indexAccessBehavior,
                      6969,
                      23);

            // Act + Assert
            Assert.Equal(69, collection[69]);
        }
        public void BuildingCollectionWith6969Elements_MinusFirstEntry_ThrowsIndexOutOfRangeException(
            PageLoadingBehavior pageLoadingBehavior,
            PageRemovalBehavior pageRemovalBehavior,
            FetchersKind fetchersKind,
            IndexAccessBehavior indexAccessBehavior)
        {
            // Arrange
            using var collection = DataVirtualizingCollectionFactory.CreateCollectionWithIncrementalInteger(
                      pageLoadingBehavior,
                      pageRemovalBehavior,
                      fetchersKind,
                      indexAccessBehavior,
                      6969,
                      100);

            // Act + Assert
            Assert.Throws <IndexOutOfRangeException>(() => collection[-1]);
        }
        public async Task BuildingCollectionWith6969Elements_6970thEntry_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[6969]);
        }
        public async Task BuildingCollectionWith6969Elements_124thEntry_123(
            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(123, collection[123]);
        }
        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]);
        }