1 package net.pterodactylus.sone.utils
3 import org.hamcrest.MatcherAssert.assertThat
4 import org.hamcrest.Matchers.contains
5 import org.hamcrest.Matchers.equalTo
9 * Unit test for [Pagination].
11 class PaginationTest {
13 private val items = listOf(1, 2, 3, 4, 5)
14 private val pagination = Pagination<Int>(items, 2)
17 fun `new pagination is at page 0`() {
18 assertThat(pagination.page, equalTo(0))
22 fun `new pagination is at page number 1`() {
23 assertThat(pagination.pageNumber, equalTo(1))
27 fun `setting a page to less than 0 sets page to 0`() {
29 assertThat(pagination.page, equalTo(0))
33 fun `setting page to a valid page sets page`() {
35 assertThat(pagination.page, equalTo(1))
39 fun `setting a too large page will cap the page`() {
41 assertThat(pagination.page, equalTo(2))
45 fun `the page count is returned correctly`() {
46 assertThat(pagination.pageCount, equalTo(3))
50 fun `page size is returned correctly`() {
51 assertThat(pagination.pageSize, equalTo(2))
55 fun `a page size of less than 1 is set to 1`() {
56 pagination.pageSize = 0
57 assertThat(pagination.pageSize, equalTo(1))
61 fun `changing page size sets new page correctly`() {
63 pagination.pageSize = 1
64 assertThat(pagination.page, equalTo(2))
68 fun `changing page size to very large returns to page 0`() {
70 pagination.pageSize = 20
71 assertThat(pagination.page, equalTo(0))
75 fun `item count for current page is page size of first page`() {
76 assertThat(pagination.itemCount, equalTo(2))
80 fun `item count for last page is 1`() {
82 assertThat(pagination.itemCount, equalTo(1))
86 fun `items on first page are returned correctly`() {
87 assertThat(pagination.items, contains(1, 2))
91 fun `items on last page are returned correctly`() {
93 assertThat(pagination.items, contains(5))
97 fun `pagination is first on first page`() {
98 assertThat(pagination.isFirst, equalTo(true))
102 fun `pagination is not first on second page`() {
104 assertThat(pagination.isFirst, equalTo(false))
108 fun `pagination is not first on last page`() {
110 assertThat(pagination.isFirst, equalTo(false))
114 fun `pagination is not last on first page`() {
115 assertThat(pagination.isLast, equalTo(false))
119 fun `pagination is not last on second page`() {
121 assertThat(pagination.isLast, equalTo(false))
125 fun `pagination is last on last page`() {
127 assertThat(pagination.isLast, equalTo(true))
131 fun `pagination is necessary for three pages`() {
132 assertThat(pagination.isNecessary, equalTo(true))
136 fun `pagination is necessary for two pages`() {
137 pagination.pageSize = 4
138 assertThat(pagination.isNecessary, equalTo(true))
142 fun `pagination is not necessary for one page`() {
143 pagination.pageSize = 20
144 assertThat(pagination.isNecessary, equalTo(false))
148 fun `previous page is returned correctly for second page`() {
150 assertThat(pagination.previousPage, equalTo(0))
154 fun `previous page is returned correctly for last page`() {
156 assertThat(pagination.previousPage, equalTo(1))
160 fun `next page is returned correctly for first page`() {
161 assertThat(pagination.nextPage, equalTo(1))
165 fun `next page is returned correctly for second page`() {
167 assertThat(pagination.nextPage, equalTo(2))
171 fun `last page is returned correctly`() {
172 assertThat(pagination.lastPage, equalTo(2))
176 fun `iterator returns items on the current page`() {
177 assertThat(pagination.iterator().asSequence().toList(), contains(1, 2))