/// <summary> /// For a reload of the existing, underlying data. /// </summary> public IObservable <PageReadResult <TItem> > Reload() { // cancel all pending reads, this should improve performance this.CancelPending(); // build the request var pageRequest = new PageReadRequest() { Offset = 0, Take = _list.Count }; // and now do the update return(EnqueueReadObservable(pageRequest, true)); }
/// <summary> /// For a reload of the existing, underlying data. /// </summary> public void Reload() { // cancel all pending reads, this should improve performance this.CancelPending(); // build the request var pageRequest = new PageReadRequest() { Offset = 0, Take = _offset }; // and now do the update EnqueueReadObservable(pageRequest, true); }
/// <summary> /// Force a reload of any cached data. /// </summary> /// <returns></returns> public IObservable <Unit> Reload() { // bin off any pending items... CancelPending(); // build the request var pageRequest = new PageReadRequest() { Offset = 0, Take = _cache.Count }; // and now do the update return(EnqueueReadObservable(pageRequest, true).Select(_ => Unit.Default)); }
public void NothingToReadMeansNoPagingRequestTest() { var offset = 0; var take = 10; var total = 99; _changeSetController.SetAlignedValues(offset, offset, false); var requestRequest = new PageReadRequest() { Offset = offset, Take = take }; var result = default(PageReadResult <CollectionModel>); var items = new List <CollectionModel>() { new CollectionModel(), new CollectionModel() }; var res = new PageReadResult <CollectionModel>(offset, 5, items) { Total = total }; var pcReturn = Observable.Return(res); _pagingController.Setup(p => p.ReadPage(offset, take)).Returns(pcReturn); var busyStates = new List <bool>(); _changeSetController.BusyObservable.Subscribe(b => busyStates.Add(b)); var readPage = _changeSetController.ReadPageObservable(requestRequest).Subscribe(r => result = r); Assert.Equal(res.Offset, result.Offset); Assert.Equal(0, result.AmountRead); Assert.Null(result.Total); // we don't know the total since never read.. Assert.Equal(3, busyStates.Count); Assert.False(busyStates[0]); Assert.True(busyStates[1]); Assert.False(busyStates[2]); _pagingController.Verify(p => p.ReadPage(offset, take), Times.Never); }
public void ReadRequestPassedThroughTest() { PageReadRequest readRequest = default(PageReadRequest); Func <PageReadRequest, IObservable <PageReadResult <CollectionModel> > > func = (r) => { readRequest = r; return(Observable.Return(default(PageReadResult <CollectionModel>))); }; _pagingController = new ObservablePagingController <CollectionModel>(func); var offset = 10; var take = 10; var read = _pagingController.ReadPage(offset, take); Assert.Equal(offset, readRequest.Offset); Assert.Equal(take, readRequest.Take); }
/// <summary> /// Test request observable used for generating exceptions and results /// </summary> /// <param name="request"></param> /// <param name="exception"></param> /// <param name="result"></param> /// <returns></returns> private IObservable <PageReadResult <CollectionModel> > GetData(PageReadRequest request, Exception exception, PageReadResult <CollectionModel> result) { _invokeCount = 0; return(Observable.Create <PageReadResult <CollectionModel> >(o => { ++_invokeCount; if (_invokeCount == 1) { o.OnError(exception); } else { o.OnNext(result); o.OnCompleted(); } return Disposable.Empty; })); }
public void NormalReadFunctionsCorrectlyTest() { var offset = 0; var take = 10; var total = 99; _changeSetController.SetAlignedValues(offset, offset + take, true); var requestRequest = new PageReadRequest() { Offset = offset, Take = take }; var result = default(PageReadResult <CollectionModel>); var items = new List <CollectionModel>() { new CollectionModel(), new CollectionModel() }; var res = new PageReadResult <CollectionModel>(offset, 5, items); res.Total = total; var pcReturn = Observable.Return(res); _pagingController.Setup(p => p.ReadPage(offset, take)).Returns(pcReturn); var readPage = _changeSetController.ReadPageObservable(requestRequest).Subscribe(r => result = r); Assert.Equal(res.Offset, result.Offset); Assert.Equal(res.Total, result.Total); Assert.Equal(res.Items[0], result.Items[0]); Assert.Equal(res.Items[1], result.Items[1]); Assert.Equal(total, _changeSetController.Total); _pagingController.Verify(p => p.ReadPage(offset, take), Times.Once); }
public void RequestsLargerThanMaxSizeAreTrimmedTest() { const int maxPageSize = 5; PageReadRequest readRequest = default(PageReadRequest); Func <PageReadRequest, IObservable <PageReadResult <CollectionModel> > > func = (r) => { readRequest = r; return(Observable.Return(default(PageReadResult <CollectionModel>))); }; _pagingController = new ObservablePagingController <CollectionModel>(func, maxPageSize: maxPageSize); var offset = 10; var take = 10; var read = _pagingController.ReadPage(offset, take); Assert.Equal(offset, readRequest.Offset); Assert.Equal(maxPageSize, readRequest.Take); }
/// <summary> /// Calculate the read range. /// </summary> /// <param name="pageReadRequest"></param> /// <param name="forceReload"></param> /// <param name="alignedStart"></param> /// <param name="alignedEnd"></param> /// <returns></returns> /// <remarks> /// Be considerable to a forced reload to ensure the complete data is re-read.</remarks> protected override bool GetReadRange(PageReadRequest pageReadRequest, bool forceReload, ref int alignedStart, ref int alignedEnd) { return(this.CalcReadRange(pageReadRequest, forceReload ? 0 : _offset, ref alignedStart, ref alignedEnd)); }
protected override bool GetReadRange(PageReadRequest pageReadRequest, bool forceReload, ref int alignedStart, ref int alignedEnd) { alignedStart = _start; alignedEnd = _end; return(_isTrue); }
public IObservable <PageReadResult <T> > ReadPageObservable(PageReadRequest pageReadRequest) { throw new NotImplementedException(); }