diff --git a/yawn-api/src/main/kotlin/com/faire/yawn/pagination/PageNumber.kt b/yawn-api/src/main/kotlin/com/faire/yawn/pagination/PageNumber.kt index 6ecc754..f742065 100644 --- a/yawn-api/src/main/kotlin/com/faire/yawn/pagination/PageNumber.kt +++ b/yawn-api/src/main/kotlin/com/faire/yawn/pagination/PageNumber.kt @@ -16,10 +16,14 @@ value class PageNumber private constructor(val zeroIndexedPageNumber: Int) { get() = zeroIndexedPageNumber + 1 operator fun div(pageSize: Int): Page = Page(pageNumber = this, pageSize = pageSize) + operator fun div(pageSize: Long): Page = this / pageSize.toInt() companion object { fun zeroIndexed(pageNumber: Int): PageNumber = PageNumber(zeroIndexedPageNumber = pageNumber) + fun zeroIndexed(pageNumber: Long): PageNumber = zeroIndexed(pageNumber.toInt()) + fun oneIndexed(pageNumber: Int): PageNumber = PageNumber(zeroIndexedPageNumber = pageNumber - 1) + fun oneIndexed(pageNumber: Long): PageNumber = oneIndexed(pageNumber.toInt()) fun starting(): PageNumber = PageNumber(zeroIndexedPageNumber = 0) } diff --git a/yawn-api/src/test/kotlin/com/faire/yawn/pagination/PageNumberTest.kt b/yawn-api/src/test/kotlin/com/faire/yawn/pagination/PageNumberTest.kt index 542ac36..02b2fe6 100644 --- a/yawn-api/src/test/kotlin/com/faire/yawn/pagination/PageNumberTest.kt +++ b/yawn-api/src/test/kotlin/com/faire/yawn/pagination/PageNumberTest.kt @@ -66,4 +66,11 @@ internal class PageNumberTest { .isInstanceOf(IllegalStateException::class.java) .withFailMessage("-1 is not a valid zero-indexed page number") } + + @Test + fun `can use Long overloads to create page numbers`() { + assertThat(PageNumber.zeroIndexed(0L).zeroIndexedPageNumber).isEqualTo(0) + assertThat(PageNumber.oneIndexed(1L).oneIndexedPageNumber).isEqualTo(1) + assertThat((PageNumber.starting() / 10L).pageSize).isEqualTo(10) + } }