/** * * @group Core * @group DataTable * @group DataTable_Filter * @group DataTable_Filter_RangeCheck */ public function testRangeCheckNormalDataTableNonIntegerValues() { $table = new Piwik_DataTable(); $table->addRowsFromArray(array(array(Piwik_DataTable_Row::COLUMNS => array('label' => 'ask', 'count' => '3')), array(Piwik_DataTable_Row::COLUMNS => array('label' => 'nintendo', 'count' => 'test')), array(Piwik_DataTable_Row::COLUMNS => array('label' => 'test', 'count' => 0x1232)), array(Piwik_DataTable_Row::COLUMNS => array('label' => 'piwik', 'count' => 0x5)), array(Piwik_DataTable_Row::COLUMNS => array('label' => 'google', 'count' => '9test')), array(Piwik_DataTable_Row::COLUMNS => array('label' => 'yahoo', 'count' => 'test4')))); $filter = new Piwik_DataTable_Filter_RangeCheck($table, 'count', 3.97, 10); $filter->filter($table); $expectedOrder = array(3.97, 3.97, 10, 5, '9test', 3.97); $this->assertEquals($expectedOrder, $table->getColumn('count')); }
protected function getTable() { $subtableAskPath1 = new Piwik_DataTable(); $subtableAskPath1->addRowsFromArray(array(array(Piwik_DataTable_Row::COLUMNS => array('label' => 'path1-index-page.html')), array(Piwik_DataTable_Row::COLUMNS => array('label' => 'another-page')))); $subtableAsk = new Piwik_DataTable(); $subtableAsk->addRowsFromArray(array(array(Piwik_DataTable_Row::COLUMNS => array('label' => 'path1'), Piwik_DataTable_Row::DATATABLE_ASSOCIATED => $subtableAskPath1), array(Piwik_DataTable_Row::COLUMNS => array('label' => 'index.html')))); $table = new Piwik_DataTable(); $rows = array(array(Piwik_DataTable_Row::COLUMNS => array('label' => 'http://www.ask.com'), Piwik_DataTable_Row::DATATABLE_ASSOCIATED => $subtableAsk), array(Piwik_DataTable_Row::COLUMNS => array('label' => 'yahoo'))); $table->addRowsFromArray($rows); return $table; }
/** * 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)); }
/** * Test to filter a column with a pattern * * @group Core * @group DataTable * @group DataTable_Filter * @group DataTable_Filter_Pattern * @dataProvider getTestData */ public function testFilterPattern($test) { $table = new Piwik_DataTable(); $idcol = Piwik_DataTable_Row::COLUMNS; $rows = array(array($idcol => array('label' => 'google')), array($idcol => array('label' => 'ask')), array($idcol => array('label' => 'piwik')), array($idcol => array('label' => 'yahoo')), array($idcol => array('label' => 'amazon')), array($idcol => array('label' => '2389752/47578949')), array($idcol => array('label' => 'Q*(%&*("$&%*(&"$*")"))'))); $table->addRowsFromArray($rows); $rowIds = array_keys($rows); $pattern = $test[0]; $expectedRows = $test[1]; $rowToDelete = array_diff($rowIds, $expectedRows); $expectedtable = clone $table; $expectedtable->deleteRows($rowToDelete); $filteredTable = clone $table; $filteredTable->filter('Pattern', array('label', $pattern)); $this->assertEquals($expectedtable->getRows(), $filteredTable->getRows()); }
/** * 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)); }
/** * Test to filter a column with a pattern */ function test_filter_Pattern() { $table = new Piwik_DataTable(); $idcol = Piwik_DataTable_Row::COLUMNS; $rows = array(array($idcol => array('label' => 'google')), array($idcol => array('label' => 'ask')), array($idcol => array('label' => 'piwik')), array($idcol => array('label' => 'yahoo')), array($idcol => array('label' => 'amazon')), array($idcol => array('label' => '2389752/47578949')), array($idcol => array('label' => 'Q*(%&*("$&%*(&"$*")"))'))); $table->addRowsFromArray($rows); $rowIds = array_keys($rows); $tests = array(array('ask', array(1)), array('oo', array(0, 3)), array('^yah', array(3)), array('\\*', array(6)), array('2/4', array(5)), array('amazon|yahoo', array(3, 4))); foreach ($tests as $test) { $pattern = $test[0]; $expectedRows = $test[1]; $rowToDelete = array_diff($rowIds, $expectedRows); $expectedtable = clone $table; $expectedtable->deleteRows($rowToDelete); $filteredTable = clone $table; $filteredTable->filter('Pattern', array('label', $pattern)); $this->assertEqual($filteredTable->getRows(), $expectedtable->getRows(), "pattern search failed for pattern {$pattern}"); } }
/** * DATA OF DATATABLE_ARRAY * ------------------------- */ protected function _getDataTableArrayTest() { $array1 = array(array(Piwik_DataTable_Row::COLUMNS => array('label' => 'Google', 'nb_uniq_visitors' => 11, 'nb_visits' => 11), Piwik_DataTable_Row::METADATA => array('url' => 'http://www.google.com', 'logo' => './plugins/Referers/images/searchEngines/www.google.com.png')), array(Piwik_DataTable_Row::COLUMNS => array('label' => 'Yahoo!', 'nb_uniq_visitors' => 15, 'nb_visits' => 151), Piwik_DataTable_Row::METADATA => array('url' => 'http://www.yahoo.com', 'logo' => './plugins/Referers/images/searchEngines/www.yahoo.com.png'))); $table1 = new Piwik_DataTable(); $table1->addRowsFromArray($array1); $array2 = array(array(Piwik_DataTable_Row::COLUMNS => array('label' => 'Google1©', 'nb_uniq_visitors' => 110, 'nb_visits' => 110), Piwik_DataTable_Row::METADATA => array('url' => 'http://www.google.com1', 'logo' => './plugins/Referers/images/searchEngines/www.google.com.png1')), array(Piwik_DataTable_Row::COLUMNS => array('label' => 'Yahoo!1', 'nb_uniq_visitors' => 150, 'nb_visits' => 1510), Piwik_DataTable_Row::METADATA => array('url' => 'http://www.yahoo.com1', 'logo' => './plugins/Referers/images/searchEngines/www.yahoo.com.png1'))); $table2 = new Piwik_DataTable(); $table2->addRowsFromArray($array2); $table3 = new Piwik_DataTable(); $table = new Piwik_DataTable_Array(); $table->setKeyName('testKey'); $table->addTable($table1, 'date1'); $table->addTable($table2, 'date2'); $table->addTable($table3, 'date3'); return $table; }
protected function _getDataTable2ForTest() { $rows = $this->_getRowsDataTable2ForTest(); $table = new Piwik_DataTable(); $table->addRowsFromArray($rows); return $table; }
protected function getTableBrowserByType($tableBrowser) { $nameToRow = array(); foreach ($tableBrowser->getRows() as $row) { $browserLabel = $row->getColumn('label'); $familyNameToUse = Piwik_getBrowserFamily($browserLabel); if (!isset($nameToRow[$familyNameToUse])) { $nameToRow[$familyNameToUse] = new Piwik_DataTable_Row(); $nameToRow[$familyNameToUse]->addColumn('label', $familyNameToUse); } $nameToRow[$familyNameToUse]->sumRow($row); } $tableBrowserType = new Piwik_DataTable(); $tableBrowserType->addRowsFromArray($nameToRow); return $tableBrowserType; }
/** * Returns a new DataTable that contains the rows of each of this table's * subtables. * * @return Piwik_DataTable */ public function mergeSubtables() { $result = new Piwik_DataTable(); foreach ($this->getRows() as $row) { $subtable = $row->getSubtable(); if ($subtable !== false) { $result->addRowsFromArray($subtable->getRows()); } } return $result; }
private function createTestDataTable() { $result = new Piwik_DataTable(); $result->addRowsFromArray(array(array(Piwik_DataTable_Row::COLUMNS => array('label' => 'row1', 'col1' => 1)), array(Piwik_DataTable_Row::COLUMNS => array('label' => 'row2', 'col1' => 2)))); return $result; }
/** * Test to filter a column with a offset, limit 3 */ function test_filter_OffsetLimit3() { $table = new Piwik_DataTable(); $idcol = Piwik_DataTable_Row::COLUMNS; $rows = array(array($idcol => array('label' => 'google')), array($idcol => array('label' => 'ask')), array($idcol => array('label' => 'piwik')), array($idcol => array('label' => 'yahoo')), array($idcol => array('label' => 'amazon')), array($idcol => array('label' => '238975247578949')), array($idcol => array('label' => 'Q*(%&*("$&%*(&"$*")"))'))); $table->addRowsFromArray($rows); $expectedtable = new Piwik_DataTable(); $filter = new Piwik_DataTable_Filter_Limit($table, 8, 15); $filter->filter($table); $colAfter = $colExpected = array(); foreach ($table->getRows() as $row) { $colAfter[] = $row->getColumn('label'); } foreach ($expectedtable->getRows() as $row) { $colExpected[] = $row->getColumn('label'); } $this->assertEqual(array_values($table->getRows()), array_values($expectedtable->getRows())); }