ArrayTest.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. use Test\Tool\BaseTestCase;
  3. use Knp\Component\Pager\Paginator;
  4. use Knp\Component\Pager\Pagination\SlidingPagination;
  5. use Symfony\Component\EventDispatcher\EventDispatcher;
  6. use Test\Mock\PaginationSubscriber as MockPaginationSubscriber;
  7. use Knp\Component\Pager\Pagination\PaginationInterface;
  8. use Knp\Component\Pager\Event\Subscriber\Paginate\ArraySubscriber;
  9. use Knp\Component\Pager\Event\Subscriber\Paginate\PaginationSubscriber;
  10. class ArrayTest extends BaseTestCase
  11. {
  12. /**
  13. * @test
  14. */
  15. function shouldPaginateAnArray()
  16. {
  17. $dispatcher = new EventDispatcher;
  18. $dispatcher->addSubscriber(new ArraySubscriber);
  19. $dispatcher->addSubscriber(new MockPaginationSubscriber); // pagination view
  20. $p = new Paginator($dispatcher);
  21. $items = array('first', 'second');
  22. $view = $p->paginate($items, 1, 10);
  23. $this->assertTrue($view instanceof PaginationInterface);
  24. $this->assertEquals(1, $view->getCurrentPageNumber());
  25. $this->assertEquals(10, $view->getItemNumberPerPage());
  26. $this->assertEquals(2, count($view->getItems()));
  27. $this->assertEquals(2, $view->getTotalItemCount());
  28. }
  29. /**
  30. * @test
  31. */
  32. function shouldSlicePaginateAnArray()
  33. {
  34. $dispatcher = new EventDispatcher;
  35. $dispatcher->addSubscriber(new ArraySubscriber);
  36. $dispatcher->addSubscriber(new MockPaginationSubscriber); // pagination view
  37. $p = new Paginator($dispatcher);
  38. $items = range('a', 'u');
  39. $view = $p->paginate($items, 2, 10);
  40. $this->assertEquals(2, $view->getCurrentPageNumber());
  41. $this->assertEquals(10, $view->getItemNumberPerPage());
  42. $this->assertEquals(10, count($view->getItems()));
  43. $this->assertEquals(21, $view->getTotalItemCount());
  44. }
  45. /**
  46. * @test
  47. */
  48. function shouldSupportPaginateStrategySubscriber()
  49. {
  50. $items = array('first', 'second');
  51. $p = new Paginator;
  52. $view = $p->paginate($items, 1, 10);
  53. $this->assertTrue($view instanceof PaginationInterface);
  54. }
  55. /**
  56. * @test
  57. */
  58. function shouldPaginateArrayObject()
  59. {
  60. $items = array('first', 'second');
  61. $array = new \ArrayObject($items);
  62. $p = new Paginator;
  63. $view = $p->paginate($array, 1, 10);
  64. $this->assertTrue($view instanceof PaginationInterface);
  65. }
  66. }