public function testPaginationRange()
 {
     $range = 10;
     // page navigatin window
     $this->GenerateDummyData(100);
     $p = new Pagination($this->dummy, count($this->dummy));
     $p->setPageRange($range);
     $p->setItemNumberPerPage(10);
     $p->setCurrentPageNumber(5);
     // page index value ('values' for this page are being displayed)
     $r = $p->getPaginationData();
     $this->assertTrue(max($r['pagesInRange']) - min($r['pagesInRange']) + 1 == $range);
 }
 /**
  * Returns a pagination object
  * 
  * @param array $entities
  * @param integer $entity_count
  * @param integer $current_page_index
  * @param integer $page_range
  * @param integer $page_size
  * @param array $additional_data
  * @return Pagination
  */
 public function getPagination($entities, $entity_count, $current_page_index, $page_range, $page_size, $additional_data = null)
 {
     if ($entities != null && !is_array($entities)) {
         throw new \Exception('Pagination.getPagination: $entities is not an array');
     }
     if ($entities == null) {
         $entities = array();
     }
     if ($additional_data != null && !is_array($additional_data)) {
         throw new \Exception('Pagination.getPagination: $additional_data is not an array');
     }
     if ($additional_data == null) {
         $additional_data = array();
     }
     $pagination = new Paginator($entities, $entity_count);
     $pagination->setPageRange($page_range);
     $pagination->setItemNumberPerPage($page_size);
     $pagination->setCurrentPageNumber($current_page_index);
     $twig_env = $this->twig;
     $twig_template = $this->template;
     $pagination->renderer = function ($data) use($twig_env, $twig_template, $additional_data) {
         //return var_export($data, true);
         // common errors to check: is $twig_template file present?
         //return $twig_template;
         try {
             return $twig_env->render($twig_template, array_merge($data, $additional_data));
         } catch (\Exception $e) {
             return $e->getMessage();
         }
     };
     return $pagination;
 }