androidx.paging.PositionalDataSource Java Examples

The following examples show how to use androidx.paging.PositionalDataSource. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: TransactionArchComponentDataSourceTest.java    From Gander with Apache License 2.0 6 votes vote down vote up
@Test
public void whenTransactionsExist_onLoadInitialCall_shouldReturnDataInOrderThatMatchFilter() {
    HttpTransaction transaction1 = getHttpTransactionWithIndex(0);
    HttpTransaction transaction2 = getHttpTransactionWithIndex(1);
    HttpTransaction transaction3 = getHttpTransactionWithIndex(2);
    HttpTransaction transaction4 = getHttpTransactionWithIndex(3);
    when(transactionDataStore.getDataList()).thenReturn(Arrays.asList(new HttpTransaction[]{transaction1, transaction2, transaction3, transaction4}));
    when(filter.apply(any(HttpTransaction.class))).thenAnswer(new Answer<Boolean>() {
        @Override
        public Boolean answer(InvocationOnMock invocation) {
            HttpTransaction httpTransaction = invocation.getArgument(0);
            return httpTransaction.getId() % 2 == 0;
        }
    });

    setUpDataSource();

    PositionalDataSource.LoadInitialParams params = new PositionalDataSource.LoadInitialParams(0, 10, 5, false);
    httpTransactionDataSource.loadInitial(params, loadInitialCallback);
    verify(loadInitialCallback).onResult(dataCapture.capture(), eq(0), eq(2));
    assertThat(dataCapture.getValue()).containsExactlyInAnyOrder(transaction1, transaction3);
}
 
Example #2
Source File: TransactionArchComponentDataSourceTest.java    From Gander with Apache License 2.0 5 votes vote down vote up
@Test
public void whenNoTransactions_onLoadInitialCall_shouldReturnNoData() {
    when(filter.apply(any(HttpTransaction.class))).thenReturn(true);
    when(transactionDataStore.getDataList()).thenReturn(Collections.<HttpTransaction>emptyList());

    setUpDataSource();

    PositionalDataSource.LoadInitialParams params = new PositionalDataSource.LoadInitialParams(0, 10, 5, false);
    httpTransactionDataSource.loadInitial(params, loadInitialCallback);
    verify(loadInitialCallback).onResult(dataCapture.capture(), eq(0), eq(0));
    assertThat(dataCapture.getValue()).isEmpty();
}
 
Example #3
Source File: TransactionArchComponentDataSourceTest.java    From Gander with Apache License 2.0 5 votes vote down vote up
private void setUpDataSource() {
    // This is how recycler views does it casting to PositionalDataSource. need to change to better api
    httpTransactionDataSource
            = (PositionalDataSource<HttpTransaction>) new TransactionArchComponentProvider()
            .getDataSourceFactory(transactionDataStore, filter)
            .create();
    httpTransactionDataSource.addInvalidatedCallback(invalidatedCallback);
}
 
Example #4
Source File: TransactionArchComponentDataSourceTest.java    From Gander with Apache License 2.0 5 votes vote down vote up
@Test
public void whenNoTransactionsMatchFilter_onLoadInitialCall_shouldReturnNoData() {
    when(filter.apply(any(HttpTransaction.class))).thenReturn(false);
    when(transactionDataStore.getDataList()).thenReturn(Arrays.asList(getHttpTransactionsWithIndices(0, 1, 2, 3)));

    setUpDataSource();

    PositionalDataSource.LoadInitialParams params = new PositionalDataSource.LoadInitialParams(0, 10, 5, false);
    httpTransactionDataSource.loadInitial(params, loadInitialCallback);
    verify(loadInitialCallback).onResult(dataCapture.capture(), eq(0), eq(0));
    assertThat(dataCapture.getValue()).isEmpty();
}
 
Example #5
Source File: TransactionArchComponentDataSourceTest.java    From Gander with Apache License 2.0 5 votes vote down vote up
@Test
public void whenTransactionsExist_onLoadRange_shouldReturnDataThatMatchFilterInOrderInSpecifiedRange() {
    HttpTransaction transaction1 = getHttpTransactionWithIndex(0);
    HttpTransaction transaction2 = getHttpTransactionWithIndex(1);
    HttpTransaction transaction3 = getHttpTransactionWithIndex(2);
    HttpTransaction transaction4 = getHttpTransactionWithIndex(3);
    HttpTransaction transaction5 = getHttpTransactionWithIndex(4);
    HttpTransaction transaction6 = getHttpTransactionWithIndex(5);
    HttpTransaction transaction7 = getHttpTransactionWithIndex(6);
    HttpTransaction transaction8 = getHttpTransactionWithIndex(7);
    HttpTransaction transaction9 = getHttpTransactionWithIndex(8);
    when(transactionDataStore.getDataList()).thenReturn(Arrays.asList(new HttpTransaction[]{transaction1, transaction2, transaction3, transaction4, transaction5, transaction6, transaction7, transaction8, transaction9}));
    when(filter.apply(any(HttpTransaction.class))).thenAnswer(new Answer<Boolean>() {
        @Override
        public Boolean answer(InvocationOnMock invocation) {
            HttpTransaction httpTransaction = invocation.getArgument(0);
            return httpTransaction.getId() % 2 == 0;
        }
    });

    setUpDataSource();

    PositionalDataSource.LoadRangeParams params = new PositionalDataSource.LoadRangeParams(1, 3);
    httpTransactionDataSource.loadRange(params, loadRangeCallback);
    verify(loadRangeCallback).onResult(dataCapture.capture());
    assertThat(dataCapture.getValue()).containsExactlyInAnyOrder(transaction3, transaction5, transaction7);
}
 
Example #6
Source File: ObjectBoxRandomDataSource.java    From Hentoid with Apache License 2.0 5 votes vote down vote up
public void loadInitial(@NonNull PositionalDataSource.LoadInitialParams params, @NonNull PositionalDataSource.LoadInitialCallback<T> callback) {
    int totalCount = (int) this.query.count();
    if (totalCount == 0) {
        callback.onResult(Collections.emptyList(), 0, 0);
    } else {
        int position = computeInitialLoadPosition(params, totalCount);
        int loadSize = computeInitialLoadSize(params, position, totalCount);
        List<T> list = this.loadRange(position, loadSize);
        if (list.size() == loadSize) {
            callback.onResult(list, position, totalCount);
        } else {
            this.invalidate();
        }
    }
}
 
Example #7
Source File: ObjectBoxRandomDataSource.java    From Hentoid with Apache License 2.0 4 votes vote down vote up
public void loadRange(@NonNull PositionalDataSource.LoadRangeParams params, @NonNull PositionalDataSource.LoadRangeCallback<T> callback) {
    callback.onResult(this.loadRange(params.startPosition, params.loadSize));
}