Skip to content

Commit

Permalink
Fixed incorrect logic when page count less then section size
Browse files Browse the repository at this point in the history
  • Loading branch information
mazanax committed Feb 26, 2017
1 parent 3070985 commit 5aa0b2b
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 8 deletions.
4 changes: 2 additions & 2 deletions src/Paginator.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@ public function getPages(int $currentPage, int $itemsCount): array
if ($currentPage >= $firstPage + $limit && $currentPage <= $lastPage - $limit) {
$commonSection = range($currentPage - $partSize, $currentPage + $partSize);
} elseif ($currentPage <= $firstPage + $limit) {
$commonSection = range($firstPage, $firstPage + $limit);
$commonSection = range($firstPage, min($firstPage + $limit, $lastPage));
} else {
$commonSection = range($lastPage - $limit, $lastPage);
$commonSection = range(max($firstPage, $lastPage - $limit), $lastPage);
}

$firstSection = array_diff($firstSection, $commonSection);
Expand Down
18 changes: 12 additions & 6 deletions src/PaginatorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ public function testGetPagesWithoutSeparator()
{
$paginator1 = new Paginator(['on_page' => 5, 'section_size' => 3]);

static::assertEquals([1, 2, 3], $paginator1->getPages(1, 9));
static::assertEquals([1, 2, 3], $paginator1->getPages(2, 9));
static::assertEquals([1, 2, 3], $paginator1->getPages(3, 9));
static::assertEquals([1, 2], $paginator1->getPages(1, 9));
static::assertEquals([1, 2], $paginator1->getPages(2, 9));
static::assertEquals([1, 2], $paginator1->getPages(3, 9));
static::assertEquals([1, 2, 3, 4], $paginator1->getPages(3, 16));

static::assertEquals([1, 2, 3, 4], $paginator1->getPages(1, 16));
Expand All @@ -24,6 +24,9 @@ public function testGetPagesWithoutSeparator()

$paginator2 = new Paginator(['on_page' => 5, 'section_size' => 5]);

static::assertEquals([1], $paginator2->getPages(1, 4));
static::assertEquals([1, 2], $paginator2->getPages(1, 6));
static::assertEquals([1, 2], $paginator2->getPages(2, 6));
static::assertEquals([1, 2, 3, 4, 5, 20], $paginator2->getPages(1, 100));
static::assertEquals([1, 2, 3, 4, 5, 20], $paginator2->getPages(2, 100));
static::assertEquals([1, 2, 3, 4, 5, 20], $paginator2->getPages(3, 100));
Expand Down Expand Up @@ -51,9 +54,9 @@ public function testGetPagesWithSeparator()
$separator = '...';
$paginator1 = new Paginator(['on_page' => 5, 'section_size' => 3, 'separator' => $separator]);

static::assertEquals([1, 2, 3], $paginator1->getPages(1, 9));
static::assertEquals([1, 2, 3], $paginator1->getPages(2, 9));
static::assertEquals([1, 2, 3], $paginator1->getPages(3, 9));
static::assertEquals([1, 2], $paginator1->getPages(1, 9));
static::assertEquals([1, 2], $paginator1->getPages(2, 9));
static::assertEquals([1, 2], $paginator1->getPages(3, 9));
static::assertEquals([1, 2, 3, 4], $paginator1->getPages(3, 16));

static::assertEquals([1, 2, 3, $separator, 4], $paginator1->getPages(1, 16));
Expand All @@ -62,6 +65,9 @@ public function testGetPagesWithSeparator()

$paginator2 = new Paginator(['on_page' => 5, 'section_size' => 5, 'separator' => $separator]);

static::assertEquals([1], $paginator2->getPages(1, 4));
static::assertEquals([1, 2], $paginator2->getPages(1, 6));
static::assertEquals([1, 2], $paginator2->getPages(2, 6));
static::assertEquals([1, 2, 3, 4, 5, $separator, 20], $paginator2->getPages(1, 100));
static::assertEquals([1, 2, 3, 4, 5, $separator, 20], $paginator2->getPages(2, 100));
static::assertEquals([1, 2, 3, 4, 5, $separator, 20], $paginator2->getPages(3, 100));
Expand Down

0 comments on commit 5aa0b2b

Please sign in to comment.