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 TestItemKeyedDataSource<T : Any>(list: List<T>) : ItemKeyedDataSource<Int, T>() {
23     private val list: List<T> = ArrayList(list)
24 
loadInitialnull25     override fun loadInitial(params: LoadInitialParams<Int>, callback: LoadInitialCallback<T>) {
26         val totalCount = list.size
27         val key = params.requestedInitialKey ?: 0
28         val sublist = list.subList(key, minOf(key + params.requestedLoadSize, totalCount))
29         callback.onResult(sublist)
30     }
31 
loadAfternull32     override fun loadAfter(params: LoadParams<Int>, callback: LoadCallback<T>) {
33         callback.onResult(list.subList(params.key, params.key + params.requestedLoadSize))
34     }
35 
loadBeforenull36     override fun loadBefore(params: LoadParams<Int>, callback: LoadCallback<T>) {
37         callback.onResult(list.subList(params.key - params.requestedLoadSize + 1, params.key + 1))
38     }
39 
getKeynull40     override fun getKey(item: T): Int {
41         return list.indexOf(item)
42     }
43 }
44