Paginator.phpt 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <?php
  2. /**
  3. * Test: Nette\Utils\Paginator Base:0 Page:3 test.
  4. */
  5. declare(strict_types=1);
  6. use Nette\Utils\Paginator;
  7. use Tester\Assert;
  8. require __DIR__ . '/../bootstrap.php';
  9. test('', function () {
  10. $paginator = new Paginator;
  11. $paginator->itemCount = 7;
  12. $paginator->itemsPerPage = 6;
  13. $paginator->base = 0;
  14. $paginator->page = 3;
  15. Assert::same(1, $paginator->page);
  16. Assert::same(2, $paginator->pageCount);
  17. Assert::same(0, $paginator->firstPage);
  18. Assert::same(1, $paginator->lastPage);
  19. Assert::same(7, $paginator->firstItemOnPage);
  20. Assert::same(7, $paginator->lastItemOnPage);
  21. Assert::same(6, $paginator->offset);
  22. Assert::same(0, $paginator->countdownOffset);
  23. Assert::same(1, $paginator->length);
  24. });
  25. test('', function () {
  26. $paginator = new Paginator;
  27. $paginator->itemCount = 7;
  28. $paginator->itemsPerPage = 6;
  29. $paginator->base = 0;
  30. $paginator->page = -1;
  31. Assert::same(0, $paginator->page);
  32. Assert::same(1, $paginator->firstItemOnPage);
  33. Assert::same(6, $paginator->lastItemOnPage);
  34. Assert::same(0, $paginator->offset);
  35. Assert::same(1, $paginator->countdownOffset);
  36. Assert::same(6, $paginator->length);
  37. });
  38. test('', function () {
  39. $paginator = new Paginator;
  40. $paginator->itemCount = 7;
  41. $paginator->itemsPerPage = 7;
  42. $paginator->base = 0;
  43. $paginator->page = -1;
  44. Assert::same(0, $paginator->page);
  45. Assert::same(1, $paginator->pageCount);
  46. Assert::same(0, $paginator->firstPage);
  47. Assert::same(0, $paginator->lastPage);
  48. Assert::same(1, $paginator->firstItemOnPage);
  49. Assert::same(7, $paginator->lastItemOnPage);
  50. Assert::same(0, $paginator->offset);
  51. Assert::same(0, $paginator->countdownOffset);
  52. Assert::same(7, $paginator->length);
  53. });
  54. test('', function () {
  55. $paginator = new Paginator;
  56. $paginator->itemCount = -1;
  57. $paginator->itemsPerPage = 7;
  58. $paginator->base = 0;
  59. $paginator->page = -1;
  60. Assert::same(0, $paginator->page);
  61. Assert::same(0, $paginator->pageCount);
  62. Assert::same(0, $paginator->firstPage);
  63. Assert::same(0, $paginator->lastPage);
  64. Assert::same(0, $paginator->firstItemOnPage);
  65. Assert::same(0, $paginator->lastItemOnPage);
  66. Assert::same(0, $paginator->offset);
  67. Assert::same(0, $paginator->countdownOffset);
  68. Assert::same(0, $paginator->length);
  69. });
  70. test('', function () {
  71. $paginator = new Paginator;
  72. $paginator->itemCount = 7;
  73. $paginator->itemsPerPage = 6;
  74. $paginator->base = 1;
  75. $paginator->page = 3;
  76. Assert::same(2, $paginator->page);
  77. Assert::same(2, $paginator->pageCount);
  78. Assert::same(1, $paginator->firstPage);
  79. Assert::same(2, $paginator->lastPage);
  80. Assert::same(7, $paginator->firstItemOnPage);
  81. Assert::same(7, $paginator->lastItemOnPage);
  82. Assert::same(6, $paginator->offset);
  83. Assert::same(0, $paginator->countdownOffset);
  84. Assert::same(1, $paginator->length);
  85. });
  86. test('', function () {
  87. $paginator = new Paginator;
  88. // ItemCount: 0
  89. $paginator->setItemCount(0);
  90. Assert::true($paginator->isFirst());
  91. Assert::true($paginator->isLast());
  92. Assert::same(0, $paginator->firstItemOnPage);
  93. Assert::same(0, $paginator->lastItemOnPage);
  94. // ItemCount: 1
  95. $paginator->setItemCount(1);
  96. Assert::true($paginator->isFirst());
  97. Assert::true($paginator->isLast());
  98. Assert::same(1, $paginator->firstItemOnPage);
  99. Assert::same(1, $paginator->lastItemOnPage);
  100. // ItemCount: 2
  101. $paginator->setItemCount(2);
  102. Assert::true($paginator->isFirst());
  103. Assert::false($paginator->isLast());
  104. Assert::same(1, $paginator->firstItemOnPage);
  105. Assert::same(1, $paginator->lastItemOnPage);
  106. // Page 2
  107. $paginator->setPage(2);
  108. Assert::false($paginator->isFirst());
  109. Assert::true($paginator->isLast());
  110. Assert::same(2, $paginator->firstItemOnPage);
  111. Assert::same(2, $paginator->lastItemOnPage);
  112. });
  113. test('', function () {
  114. $paginator = new Paginator;
  115. $paginator->itemsPerPage = 6;
  116. $paginator->base = 0;
  117. $paginator->page = 3;
  118. Assert::same(3, $paginator->page);
  119. Assert::null($paginator->pageCount);
  120. Assert::same(0, $paginator->firstPage);
  121. Assert::null($paginator->lastPage);
  122. Assert::same(19, $paginator->firstItemOnPage);
  123. Assert::same(24, $paginator->lastItemOnPage);
  124. Assert::same(18, $paginator->offset);
  125. Assert::null($paginator->countdownOffset);
  126. Assert::same(6, $paginator->length);
  127. });