/**
  * Test to exclude low population filter
  */
 function test_filter_Lowpop1()
 {
     $idcol = Piwik_DataTable_Row::COLUMNS;
     $table = new Piwik_DataTable();
     $rows = array(array($idcol => array('label' => 'google', 'nb_visits' => 897)), array($idcol => array('label' => 'ask', 'nb_visits' => -152)), array($idcol => array('label' => 'piwik', 'nb_visits' => 1.5)), array($idcol => array('label' => 'piwik2', 'nb_visits' => 1.4)), array($idcol => array('label' => 'yahoo', 'nb_visits' => 154)), array($idcol => array('label' => 'amazon', 'nb_visits' => 30)), array($idcol => array('label' => '238949', 'nb_visits' => 0)), array($idcol => array('label' => 'Q*(%&*', 'nb_visits' => 1)), array($idcol => array('label' => 'Q*(%&*2', 'nb_visits' => -1.5)));
     $table->addRowsFromArray($rows);
     $expectedtable = new Piwik_DataTable();
     $rows = array(array($idcol => array('label' => 'google', 'nb_visits' => 897)), array($idcol => array('label' => 'piwik', 'nb_visits' => 1.5)), array($idcol => array('label' => 'piwik2', 'nb_visits' => 1.4)), array($idcol => array('label' => 'yahoo', 'nb_visits' => 154)), array($idcol => array('label' => 'amazon', 'nb_visits' => 30)));
     $expectedtable->addRowsFromArray($rows);
     $filter = new Piwik_DataTable_Filter_ExcludeLowPopulation($table, 'nb_visits', 1.4);
     $this->assertTrue(Piwik_DataTable::isEqual($table, $expectedtable));
 }
Exemple #2
0
 /**
  * Test to sort by visit
  */
 function test_filter_SortNumeric()
 {
     $idcol = Piwik_DataTable_Row::COLUMNS;
     $table = new Piwik_DataTable();
     $rows = array(array($idcol => array('label' => 'google', 'nb_visits' => 897)), array($idcol => array('label' => 'ask', 'nb_visits' => -152)), array($idcol => array('label' => 'piwik', 'nb_visits' => 1.5)), array($idcol => array('label' => 'yahoo', 'nb_visits' => 154)), array($idcol => array('label' => 'amazon', 'nb_visits' => 30)), array($idcol => array('label' => '238949', 'nb_visits' => 0)), array($idcol => array('label' => 'Q*(%&*', 'nb_visits' => 1)));
     $table->addRowsFromArray($rows);
     $expectedtable = new Piwik_DataTable();
     $rows = array(array($idcol => array('label' => 'ask', 'nb_visits' => -152)), array($idcol => array('label' => '238949', 'nb_visits' => 0)), array($idcol => array('label' => 'Q*(%&*', 'nb_visits' => 1)), array($idcol => array('label' => 'piwik', 'nb_visits' => 1.5)), array($idcol => array('label' => 'amazon', 'nb_visits' => 30)), array($idcol => array('label' => 'yahoo', 'nb_visits' => 154)), array($idcol => array('label' => 'google', 'nb_visits' => 897)));
     $expectedtable->addRowsFromArray($rows);
     $expectedtableReverse = new Piwik_DataTable();
     $expectedtableReverse->addRowsFromArray(array_reverse($rows));
     $filter = new Piwik_DataTable_Filter_Sort($table, 'nb_visits', 'asc');
     $this->assertTrue(Piwik_DataTable::isEqual($table, $expectedtable));
     $filter = new Piwik_DataTable_Filter_Sort($table, 'nb_visits', 'desc');
     $this->assertTrue(Piwik_DataTable::isEqual($table, $expectedtableReverse));
 }
 public function test_addOneTableWithSummaryRow()
 {
     // row0, row1, row2, rowSummary1
     $table1 = $this->getDataTableCount5();
     $filter = new Piwik_DataTable_Filter_AddSummaryRow($table1, 3);
     // row0, row1, row2, row3, row4
     $table2 = $this->getDataTableCount5();
     // we expect row0+row0, row1+row1, row2+row2, row3, row4, rowSummary1
     $expectedTable = new Piwik_DataTable();
     $expectedTable->addRow(new Piwik_DataTable_Row(array(Piwik_DataTable_Row::COLUMNS => array('label' => 'amazon', 'nb' => 20000))));
     $expectedTable->addRow(new Piwik_DataTable_Row(array(Piwik_DataTable_Row::COLUMNS => array('label' => 'yahoo', 'nb' => 2000))));
     $expectedTable->addRow(new Piwik_DataTable_Row(array(Piwik_DataTable_Row::COLUMNS => array('label' => 'piwik', 'nb' => 200))));
     $expectedTable->addRow($this->getRow3());
     $expectedTable->addRow($this->getRow4());
     $expectedTable->addRow(new Piwik_DataTable_Row(array(Piwik_DataTable_Row::COLUMNS => array('label' => Piwik_DataTable::LABEL_SUMMARY_ROW, 'nb' => 11))));
     $table1->addDataTable($table2);
     $this->assertTrue(Piwik_DataTable::isEqual($expectedTable, $table1));
 }
Exemple #4
0
 /**
  * test add 2 different tables to the same table
  * 
  * @group Core
  * @group DataTable
  */
 public function testAddDataTable2times()
 {
     $idcol = Piwik_DataTable_Row::COLUMNS;
     $rows = array(array($idcol => array('label' => 'google', 'visits' => 1)), array($idcol => array('label' => 'ask', 'visits' => 0)), array($idcol => array('label' => '123', 'visits' => 2)), Piwik_DataTable::ID_SUMMARY_ROW => array($idcol => array('label' => Piwik_DataTable::LABEL_SUMMARY_ROW, 'visits' => 1)));
     $table = new Piwik_DataTable();
     $table->addRowsFromArray($rows);
     $rows2 = array(array($idcol => array('label' => 'google2', 'visits' => -1)), array($idcol => array('label' => 'ask', 'visits' => 100)), array($idcol => array('label' => '123456', 'visits' => 1.5)));
     $table2 = new Piwik_DataTable();
     $table2->addRowsFromArray($rows2);
     $rows3 = array(array($idcol => array('label' => 'google2', 'visits' => -1)), array($idcol => array('label' => 'ask', 'visits' => -10)), array($idcol => array('label' => '123ab', 'visits' => 1.5)), Piwik_DataTable::ID_SUMMARY_ROW => array($idcol => array('label' => Piwik_DataTable::LABEL_SUMMARY_ROW, 'visits' => 3)));
     $table3 = new Piwik_DataTable();
     $table3->addRowsFromArray($rows3);
     // add the 2 tables
     $table->addDataTable($table2);
     $table->addDataTable($table3);
     $rowsExpected = array(array($idcol => array('label' => 'google', 'visits' => 1)), array($idcol => array('label' => 'ask', 'visits' => 90)), array($idcol => array('label' => '123', 'visits' => 2)), array($idcol => array('label' => 'google2', 'visits' => -2)), array($idcol => array('label' => '123456', 'visits' => 1.5)), array($idcol => array('label' => '123ab', 'visits' => 1.5)), Piwik_DataTable::ID_SUMMARY_ROW => array($idcol => array('label' => Piwik_DataTable::LABEL_SUMMARY_ROW, 'visits' => 4)));
     $tableExpected = new Piwik_DataTable();
     $tableExpected->addRowsFromArray($rowsExpected);
     $this->assertTrue(Piwik_DataTable::isEqual($table, $tableExpected));
 }
Exemple #5
0
 /**
  * Helper function to test if two rows are equal.
  * 
  * Two rows are equal 
  * - if they have exactly the same columns / metadata
  * - if they have a subDataTable associated, then we check that both of them are the same.
  * 
  * @param Piwik_DataTable_Row row1 to compare
  * @param Piwik_DataTable_Row row2 to compare
  * 
  * @return bool
  */
 public static function isEqual(Piwik_DataTable_Row $row1, Piwik_DataTable_Row $row2)
 {
     //same columns
     $cols1 = $row1->getColumns();
     $cols2 = $row2->getColumns();
     $diff1 = array_udiff($cols1, $cols2, array(__CLASS__, 'compareElements'));
     $diff2 = array_udiff($cols2, $cols1, array(__CLASS__, 'compareElements'));
     if ($diff1 != $diff2) {
         return false;
     }
     $dets1 = $row1->getMetadata();
     $dets2 = $row2->getMetadata();
     ksort($dets1);
     ksort($dets2);
     if ($dets1 != $dets2) {
         return false;
     }
     // either both are null
     // or both have a value
     if (!(is_null($row1->getIdSubDataTable()) && is_null($row2->getIdSubDataTable()))) {
         $subtable1 = Piwik_DataTable_Manager::getInstance()->getTable($row1->getIdSubDataTable());
         $subtable2 = Piwik_DataTable_Manager::getInstance()->getTable($row2->getIdSubDataTable());
         if (!Piwik_DataTable::isEqual($subtable1, $subtable2)) {
             return false;
         }
     }
     return true;
 }
Exemple #6
0
 /**
  * Helper function to test if two rows are equal.
  * 
  * Two rows are equal 
  * - if they have exactly the same columns / details
  * - if they have a subDataTable associated, then we check that both of them are the same.
  * 
  * @param Piwik_DataTable_Row row1 to compare
  * @param Piwik_DataTable_Row row2 to compare
  * 
  * @return bool
  */
 public static function isEqual(Piwik_DataTable_Row $row1, Piwik_DataTable_Row $row2)
 {
     //same columns
     $cols1 = $row1->getColumns();
     $cols2 = $row2->getColumns();
     uksort($cols1, 'strnatcasecmp');
     uksort($cols2, 'strnatcasecmp');
     if ($cols1 != $cols2) {
         return false;
     }
     $dets1 = $row1->getDetails();
     $dets2 = $row2->getDetails();
     ksort($dets1);
     ksort($dets2);
     // same details
     if ($dets1 != $dets2) {
         return false;
     }
     // either both are null
     // or both have a value
     if (!(is_null($row1->getIdSubDataTable()) && is_null($row2->getIdSubDataTable()))) {
         $subtable1 = Piwik_DataTable_Manager::getInstance()->getTable($row1->getIdSubDataTable());
         $subtable2 = Piwik_DataTable_Manager::getInstance()->getTable($row2->getIdSubDataTable());
         if (!Piwik_DataTable::isEqual($subtable1, $subtable2)) {
             return false;
         }
     }
     return true;
 }
Exemple #7
0
 function test_generateDataTable_1row4level()
 {
     $table = new Piwik_DataTable();
     $rowpagecat3 = new Piwik_DataTable_Row(array(Piwik_DataTable_Row::COLUMNS => array('label' => '123123', 'visits' => 3, 'actions' => 5)));
     $rowcat3 = new Piwik_DataTable_Row(array(Piwik_DataTable_Row::COLUMNS => array('label' => '789.654', 'visits' => 3, 'actions' => 5)));
     $rowcat2 = new Piwik_DataTable_Row(array(Piwik_DataTable_Row::COLUMNS => array('label' => 'cat2', 'visits' => 3, 'actions' => 5)));
     $rowcat1 = new Piwik_DataTable_Row(array(Piwik_DataTable_Row::COLUMNS => array('label' => '&*()', 'visits' => 3, 'actions' => 5)));
     $subtablerowpagecat3 = new Piwik_DataTable();
     $subtablerowpagecat3->addRow($rowpagecat3);
     $rowcat3->addSubtable($subtablerowpagecat3);
     $subtablecat2 = new Piwik_DataTable();
     $subtablecat2->addRow($rowcat3);
     $rowcat2->addSubtable($subtablecat2);
     $subtablecat1 = new Piwik_DataTable();
     $subtablecat1->addRow($rowcat2);
     $rowcat1->addSubtable($subtablecat1);
     //-- add
     $table->addRow($rowcat1);
     // WHAT WE TEST
     $input = array('&*()' => array('cat2' => array('789.654' => array('123123' => $rowpagecat3))));
     $tableGenerated = Piwik_ArchiveProcessing_Day::generateDataTable($input);
     $r1 = new Piwik_DataTable_Renderer_Console();
     $r1->setTable($table);
     $r2 = new Piwik_DataTable_Renderer_Console();
     $r2->setTable($tableGenerated);
     $this->assertTrue(Piwik_DataTable::isEqual($table, $tableGenerated));
 }