/**
  * Test recalculate.
  * @covers Rentalhost\VanillaPagination\Pagination::setCurrentPage
  * @covers Rentalhost\VanillaPagination\Pagination::setCurrentItem
  * @covers Rentalhost\VanillaPagination\Pagination::setTotalItems
  * @covers Rentalhost\VanillaPagination\Pagination::setItemsPerPage
  * @covers Rentalhost\VanillaPagination\Pagination::getCurrentPageOffsets
  */
 public function testRecalculate()
 {
     $pagination = new Pagination(200, 20);
     $pagination->setCurrentPage(1);
     static::assertSame(1, $pagination->getCurrentPage());
     static::assertSame(200, $pagination->getTotalItems());
     static::assertSame(20, $pagination->getItemsPerPage());
     static::assertSame(10, $pagination->getTotalPages());
     static::assertTrue($pagination->hasPages());
     $pageOffsets = $pagination->getCurrentPageOffsets();
     static::assertSame(1, $pageOffsets->firstItem);
     static::assertSame(20, $pageOffsets->lastItem);
     // Total items: 100.
     $pagination->setTotalItems(100);
     static::assertSame(1, $pagination->getCurrentPage());
     static::assertSame(100, $pagination->getTotalItems());
     static::assertSame(20, $pagination->getItemsPerPage());
     static::assertSame(5, $pagination->getTotalPages());
     static::assertTrue($pagination->hasPages());
     $pageOffsets = $pagination->getCurrentPageOffsets();
     static::assertSame(1, $pageOffsets->firstItem);
     static::assertSame(20, $pageOffsets->lastItem);
     // Total items: 0.
     $pagination->setTotalItems(0);
     static::assertSame(0, $pagination->getCurrentPage());
     static::assertSame(0, $pagination->getTotalItems());
     static::assertSame(20, $pagination->getItemsPerPage());
     static::assertSame(0, $pagination->getTotalPages());
     static::assertFalse($pagination->hasPages());
     $pageOffsets = $pagination->getCurrentPageOffsets();
     static::assertSame(0, $pageOffsets->firstItem);
     static::assertSame(0, $pageOffsets->lastItem);
     // Total items: 150.
     $pagination->setTotalItems(150);
     static::assertSame(1, $pagination->getCurrentPage());
     static::assertSame(150, $pagination->getTotalItems());
     static::assertSame(20, $pagination->getItemsPerPage());
     static::assertSame(8, $pagination->getTotalPages());
     static::assertTrue($pagination->hasPages());
     $pageOffsets = $pagination->getCurrentPageOffsets();
     static::assertSame(1, $pageOffsets->firstItem);
     static::assertSame(20, $pageOffsets->lastItem);
     // Items per page: 40.
     $pagination->setItemsPerPage(40);
     static::assertSame(1, $pagination->getCurrentPage());
     static::assertSame(150, $pagination->getTotalItems());
     static::assertSame(40, $pagination->getItemsPerPage());
     static::assertSame(4, $pagination->getTotalPages());
     static::assertTrue($pagination->hasPages());
     $pageOffsets = $pagination->getCurrentPageOffsets();
     static::assertSame(1, $pageOffsets->firstItem);
     static::assertSame(40, $pageOffsets->lastItem);
     // Current page: 5.
     $pagination->setCurrentPage(5);
     static::assertSame(4, $pagination->getCurrentPage());
     $pageOffsets = $pagination->getCurrentPageOffsets();
     static::assertSame(121, $pageOffsets->firstItem);
     static::assertSame(150, $pageOffsets->lastItem);
     // Items per page: 20.
     $pagination->setItemsPerPage(20);
     static::assertSame(7, $pagination->getCurrentPage());
     $pageOffsets = $pagination->getCurrentPageOffsets();
     static::assertSame(121, $pageOffsets->firstItem);
     static::assertSame(140, $pageOffsets->lastItem);
     // Total items: 0, Items per page: 50.
     $pagination->setTotalItems(0);
     $pagination->setItemsPerPage(50);
     static::assertSame(0, $pagination->getCurrentPage());
     $pageOffsets = $pagination->getCurrentPageOffsets();
     static::assertSame(0, $pageOffsets->firstItem);
     static::assertSame(0, $pageOffsets->lastItem);
 }