add pagination to recentChapters (#246)
* add pagination to recentChapters * Use kotlin native library Co-authored-by: Mitchell Syer <Mitchellptbo@gmail.com> Co-authored-by: Mitchell Syer <Mitchellptbo@gmail.com>
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
package suwayomi.tachidesk.manga.model
|
||||
|
||||
/*
|
||||
* Copyright (C) Contributors to the Suwayomi project
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Test
|
||||
import suwayomi.tachidesk.manga.model.dataclass.PaginatedList
|
||||
import suwayomi.tachidesk.manga.model.dataclass.PaginationFactor
|
||||
import suwayomi.tachidesk.manga.model.dataclass.paginatedFrom
|
||||
import suwayomi.tachidesk.test.ApplicationTest
|
||||
|
||||
class PaginatedListTest : ApplicationTest() {
|
||||
@Test
|
||||
fun `empty list`() {
|
||||
val paginated = paginatedFrom(0) { listIndicesOf(0, 0) }
|
||||
|
||||
assertEquals(
|
||||
PaginatedList(emptyList<Int>(), false),
|
||||
paginated
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `size smaller than PaginationFactor`() {
|
||||
val paginated = paginatedFrom(0) { listIndicesOf(0, PaginationFactor - 1) }
|
||||
|
||||
assertEquals(
|
||||
PaginatedList(listIndicesOf(0, PaginationFactor - 1), false),
|
||||
paginated,
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `one less than two times PaginationFactor`() {
|
||||
val masterLister = { listIndicesOf(0, PaginationFactor * 2 - 1) }
|
||||
|
||||
val firstPage = paginatedFrom(0, lister = masterLister)
|
||||
|
||||
assertEquals(
|
||||
PaginatedList(listIndicesOf(0, PaginationFactor), true),
|
||||
firstPage,
|
||||
)
|
||||
|
||||
val secondPage = paginatedFrom(1, lister = masterLister)
|
||||
|
||||
assertEquals(
|
||||
PaginatedList(listIndicesOf(PaginationFactor, PaginationFactor * 2 - 1), false),
|
||||
secondPage,
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `two times PaginationFactor`() {
|
||||
val masterLister = { listIndicesOf(0, PaginationFactor * 2) }
|
||||
|
||||
val firstPage = paginatedFrom(0, lister = masterLister)
|
||||
|
||||
assertEquals(
|
||||
PaginatedList(listIndicesOf(0, PaginationFactor), true),
|
||||
firstPage,
|
||||
)
|
||||
|
||||
val secondPage = paginatedFrom(1, lister = masterLister)
|
||||
|
||||
assertEquals(
|
||||
PaginatedList(listIndicesOf(PaginationFactor, PaginationFactor * 2), false),
|
||||
secondPage,
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `one more than two times PaginationFactor`() {
|
||||
val masterLister = { listIndicesOf(0, PaginationFactor * 2 + 1) }
|
||||
|
||||
val firstPage = paginatedFrom(0, lister = masterLister)
|
||||
|
||||
assertEquals(
|
||||
PaginatedList(listIndicesOf(0, PaginationFactor), true),
|
||||
firstPage,
|
||||
)
|
||||
|
||||
val secondPage = paginatedFrom(1, lister = masterLister)
|
||||
|
||||
assertEquals(
|
||||
PaginatedList(listIndicesOf(PaginationFactor, PaginationFactor * 2), true),
|
||||
secondPage,
|
||||
)
|
||||
|
||||
val thirdPage = paginatedFrom(2, lister = masterLister)
|
||||
|
||||
assertEquals(
|
||||
PaginatedList(listIndicesOf(PaginationFactor * 2, PaginationFactor * 2 + 1), false),
|
||||
thirdPage,
|
||||
)
|
||||
}
|
||||
|
||||
private fun listIndicesOf(first: Int, last: Int): List<Int> {
|
||||
return (first until last).toList()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user