/** * we test the count rows and the count rows recursive version * on a Complex array (rows with 2 and 3 levels only) * * the recursive count returns * the sum of the number of rows of all the subtables * + the number of rows in the parent table * * @group Core * @group DataTable */ public function testCountRowsComplex() { $idcol = Piwik_DataTable_Row::COLUMNS; $idsubtable = Piwik_DataTable_Row::DATATABLE_ASSOCIATED; // table to go in the SUB table of RoW1 $tableSubOfSubOfRow1 = new Piwik_DataTable(); $rows1sub = array(array($idcol => array('label' => 'google')), array($idcol => array('label' => 'google78')), array($idcol => array('label' => 'googlaegge')), array($idcol => array('label' => 'gogeoggle')), array($idcol => array('label' => 'goaegaegaogle')), array($idcol => array('label' => 'ask')), array($idcol => array('label' => '238975247578949'))); $tableSubOfSubOfRow1->addRowsFromArray($rows1sub); // table to go in row1 $tableSubOfRow1 = new Piwik_DataTable(); $rows1 = array(array($idcol => array('label' => 'google'), $idsubtable => $tableSubOfSubOfRow1), array($idcol => array('label' => 'ask')), array($idcol => array('label' => '238975247578949'))); $tableSubOfRow1->addRowsFromArray($rows1); // table to go in row2 $tableSubOfRow2 = new Piwik_DataTable(); $rows2 = array(array($idcol => array('label' => 'google')), array($idcol => array('label' => 'ask')), array($idcol => array('label' => '238975247578949')), array($idcol => array('label' => 'agaegaesk')), array($idcol => array('label' => '23g 8975247578949'))); $tableSubOfRow2->addRowsFromArray($rows2); // main parent table $table = new Piwik_DataTable(); $rows = array(array($idcol => array('label' => 'row1')), array($idcol => array('label' => 'row2'), $idsubtable => $tableSubOfRow1), array($idcol => array('label' => 'row3'), $idsubtable => $tableSubOfRow2)); $table->addRowsFromArray($rows); $this->assertEquals(count($rows), $table->getRowsCount()); $countAllRows = count($rows) + count($rows1) + count($rows2) + count($rows1sub); $this->assertEquals($countAllRows, $table->getRowsCountRecursive()); }