1 /*
2  * Copyright 2020 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package androidx.paging
18 
19 import java.util.ArrayList
20 
21 @Suppress("DEPRECATION")
22 class TestPageKeyedDataSource<T : Any>(list: List<T>) : PageKeyedDataSource<Int, T>() {
23     private val list: List<T> = ArrayList(list)
24 
loadInitialnull25     override fun loadInitial(
26         params: LoadInitialParams<Int>,
27         callback: LoadInitialCallback<Int, T>
28     ) {
29         val totalCount = list.size
30         val sublist = list.subList(0, minOf(params.requestedLoadSize, totalCount))
31         callback.onResult(sublist, null, params.requestedLoadSize)
32     }
33 
loadBeforenull34     override fun loadBefore(params: LoadParams<Int>, callback: LoadCallback<Int, T>) {
35         callback.onResult(
36             list.subList(params.key - params.requestedLoadSize + 1, params.key + 1),
37             params.key - 1
38         )
39     }
40 
loadAfternull41     override fun loadAfter(params: LoadParams<Int>, callback: LoadCallback<Int, T>) {
42         callback.onResult(
43             list.subList(params.key, params.key + params.requestedLoadSize),
44             params.key + params.requestedLoadSize
45         )
46     }
47 }
48