Skip to content
Extraits de code Groupes Projets
Valider e35b696a rédigé par sgiehl's avatar sgiehl
Parcourir les fichiers

refs #3227 more tests

git-svn-id: http://dev.piwik.org/svn/trunk@6496 59fd770c-687e-43c8-a1e3-f5a4ff64c105
parent 33410eae
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
<?php
/**
* Piwik - Open source web analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
* @version $Id$
*/
class ArchiveProcessing_DayTest extends PHPUnit_Framework_TestCase
{
/**
* @group Core
* @group ArchiveProcessing
* @group ArchiveProcessing_Day
*/
public function testGenerateDataTableSimple()
{
$row1 = new Piwik_DataTable_Row( array( Piwik_DataTable_Row::COLUMNS =>
array('label' => 'page1', 'visits' => 1, 'actions' => 2, '666' => 'evil' )));
$input = array(
'page1' => $row1,
);
$table = new Piwik_DataTable;
$table->addRow($row1);
$tableGenerated = Piwik_ArchiveProcessing_Day::generateDataTable($input);
$this->assertTrue(Piwik_DataTable::isEqual($table,$tableGenerated));
}
/**
* @group Core
* @group ArchiveProcessing
* @group ArchiveProcessing_Day
*/
public function testGenerateDataTable2rows()
{
$row1 = new Piwik_DataTable_Row( array( Piwik_DataTable_Row::COLUMNS =>
array('label' => 'page1', 'visits' => 1, 'actions' => 2)));
$row2 = new Piwik_DataTable_Row( array( Piwik_DataTable_Row::COLUMNS =>
array('label' => 'page2', 'visits' => 3, 'actions' => 5)));
$input = array(
'page1' => $row1,
'page2' => $row2,
);
$table = new Piwik_DataTable;
$table->addRow($row1);
$table->addRow($row2);
$tableGenerated = Piwik_ArchiveProcessing_Day::generateDataTable($input);
$this->assertTrue(Piwik_DataTable::isEqual($table,$tableGenerated));
}
/**
* @group Core
* @group ArchiveProcessing
* @group ArchiveProcessing_Day
*/
public function testGenerateDataTable1row2level()
{
$row1 = new Piwik_DataTable_Row( array( Piwik_DataTable_Row::COLUMNS =>
array('label' => 'cat1', 'visits' => 3, 'actions' => 5 )));
$rowLevel2 = new Piwik_DataTable_Row( array( Piwik_DataTable_Row::COLUMNS =>
array('label' => 'page1', 'visits' => 3, 'actions' => 5)));
$subtable = new Piwik_DataTable;
$subtable->addRow($rowLevel2);
$row1->addSubtable($subtable);
$table = new Piwik_DataTable;
$table->addRow($row1);
$input = array(
'cat1' => array(
'page1' => $rowLevel2,
)
);
$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));
}
/**
* @group Core
* @group ArchiveProcessing
* @group ArchiveProcessing_Day
*/
public function testGenerateDataTable2rows2level()
{
$table = new Piwik_DataTable;
//FIRST ROW + SUBTABLE
$row1 = new Piwik_DataTable_Row( array( Piwik_DataTable_Row::COLUMNS =>
array( 'label' => 'cat1', 'visits' => 3, 'actions' => 5 )));
$rowLevel2a = new Piwik_DataTable_Row( array( Piwik_DataTable_Row::COLUMNS =>
array( 'label' => 'page1', 'visits' => 3, 'actions' => 5)));
$subtable = new Piwik_DataTable;
$subtable->addRow($rowLevel2a);
$row1->addSubtable($subtable);
//-- add
$table->addRow($row1);
//SECOND ROW + SUBTABLE MULTI ROWS
$row1 = new Piwik_DataTable_Row( array( Piwik_DataTable_Row::COLUMNS =>
array('label' => 'cat2', 'visits' => 13, 'actions' => 9 )));
$rowLevel2b1 = new Piwik_DataTable_Row( array( Piwik_DataTable_Row::COLUMNS =>
array('label' => 'page2a', 'visits' => 6, 'actions' => 8)));
$rowLevel2b2 = new Piwik_DataTable_Row( array( Piwik_DataTable_Row::COLUMNS =>
array('label' => 'page2b', 'visits' => 7, 'actions' => 1)));
$subtable = new Piwik_DataTable;
$subtable->addRow($rowLevel2b1);
$subtable->addRow($rowLevel2b2);
$row1->addSubtable($subtable);
//-- add
$table->addRow($row1);
// WHAT WE TEST
$input = array(
'cat1' => array(
'page1' => $rowLevel2a,
),
'cat2' => array(
'page2a' => $rowLevel2b1,
'page2b' => $rowLevel2b2,
)
);
$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));
}
/**
* @group Core
* @group ArchiveProcessing
* @group ArchiveProcessing_Day
*/
public function testGenerateDataTable1row4levelMultiRows()
{
$table = new Piwik_DataTable;
//FIRST ROW + SUBTABLE
$rowcat2 = new Piwik_DataTable_Row( array( Piwik_DataTable_Row::COLUMNS =>
array('label' => '456', 'visits' => 3, 'actions' => 5 )));
$cat2 = 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' => 'pagecat1', 'visits' => 6, 'actions' => 4)));
$cat1 = new Piwik_DataTable_Row( array( Piwik_DataTable_Row::COLUMNS =>
array('label' => 'cat1', 'visits' => 9, 'actions' => 9 )));
$subtablecat2 = new Piwik_DataTable;
$subtablecat2->addRow($rowcat2);
$cat2->addSubtable($subtablecat2);
$subtablecat1 = new Piwik_DataTable;
$subtablecat1->addRow($rowcat1);
$subtablecat1->addRow($cat2);
$cat1->addSubtable($subtablecat1);
//-- add
$table->addRow($cat1);
// WHAT WE TEST
$input = array(
'cat1' => array(
'pagecat1' => $rowcat1,
'cat2' => array(
'pagecat2' => $rowcat2,
),
),
);
$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));
}
/**
* @group Core
* @group ArchiveProcessing
* @group ArchiveProcessing_Day
*/
public function testGenerateDataTable1row4level()
{
$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));
}
}
<?php
/**
* Piwik - Open source web analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
* @version $Id$
*/
class DataTable_Filter_AddSummaryRowTest extends PHPUnit_Framework_TestCase
{
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_AddSummaryRow
*/
public function testOffsetIsCountSummaryRowShouldBeTheRow()
{
$table = $this->getDataTableCount5();
$filter = new Piwik_DataTable_Filter_AddSummaryRow($table, 5);
$filter->filter($table);
$this->assertEquals(5, $table->getRowsCount());
$this->assertTrue(Piwik_DataTable_Row::isEqual($table->getLastRow(), $this->getRow4()));
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_AddSummaryRow
*/
public function testOffsetIsLessThanCountSummaryRowShouldBeTheSum()
{
$table = $this->getDataTableCount5();
$filter = new Piwik_DataTable_Filter_AddSummaryRow($table, 2);
$filter->filter($table);
$this->assertEquals(3, $table->getRowsCount());
$expectedRow = new Piwik_DataTable_Row(array( Piwik_DataTable_Row::COLUMNS => array('label'=>Piwik_DataTable::LABEL_SUMMARY_ROW, 'nb' => 111)));
$this->assertTrue(Piwik_DataTable_Row::isEqual($table->getLastRow(), $expectedRow));
// check that column 'label' is forced to be first in summary row
$this->assertEquals(array_keys($table->getLastRow()->getColumns()), array_keys($expectedRow->getColumns()));
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_AddSummaryRow
*/
public function testOffsetIsMoreThanCountShouldNotAddSummaryRow()
{
$table = $this->getDataTableCount5();
$filter = new Piwik_DataTable_Filter_AddSummaryRow($table, 6);
$filter->filter($table);
$this->assertEquals(5, $table->getRowsCount());
$this->assertTrue(Piwik_DataTable_Row::isEqual($table->getLastRow(), $this->getRow4()));
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_AddSummaryRow
*/
public function testWhenThereIsAlreadyASummaryRowShouldReplaceTheSummaryRow()
{
$table = $this->getDataTableCount5();
$filter1 = new Piwik_DataTable_Filter_AddSummaryRow($table, 3);
$filter1->filter($table);
$filter2 = new Piwik_DataTable_Filter_AddSummaryRow($table, 2);
$filter2->filter($table);
$this->assertEquals(3, $table->getRowsCount());
$expectedRow = new Piwik_DataTable_Row(array( Piwik_DataTable_Row::COLUMNS => array('label'=>Piwik_DataTable::LABEL_SUMMARY_ROW, 'nb' => 111)));
$this->assertTrue(Piwik_DataTable_Row::isEqual($table->getLastRow(), $expectedRow));
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_AddSummaryRow
*/
public function testSumTablesWithSummaryRowShouldSumTheSummaryRow()
{
// row0, row1, row2, rowSummary1
$table1 = $this->getDataTableCount5();
$filter = new Piwik_DataTable_Filter_AddSummaryRow($table1, 3);
$filter->filter($table1);
// row0, row1, rowSummary2
$table2 = $this->getDataTableCount5();
$filter = new Piwik_DataTable_Filter_AddSummaryRow($table2, 2);
$filter->filter($table2);
// we expect row0+row0, row1+row1, row2, rowSummary1+rowSummary2
$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' => 100) )));
$expectedTable->addRow( new Piwik_DataTable_Row(array( Piwik_DataTable_Row::COLUMNS => array('label'=>Piwik_DataTable::LABEL_SUMMARY_ROW, 'nb' => 122) )));
$table1->addDataTable($table2);
$this->assertTrue(Piwik_DataTable::isEqual($expectedTable, $table1));
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_AddSummaryRow
*/
public function testAddOneTableWithSummaryRow()
{
// row0, row1, row2, rowSummary1
$table1 = $this->getDataTableCount5();
$filter = new Piwik_DataTable_Filter_AddSummaryRow($table1, 3);
$filter->filter($table1);
// 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));
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_AddSummaryRow
*/
public function testWhenRowsInRandomOrderButSortSpecifiedShouldComputeSummaryRowAfterSort()
{
$table = new Piwik_DataTable;
$table->addRow( $this->getRow3() );
$table->addRow( $this->getRow2() );
$table->addRow( $this->getRow4() );
$table->addRow( $this->getRow1() );
$table->addRow( $this->getRow0() );
$filter = new Piwik_DataTable_Filter_AddSummaryRow($table, 2, Piwik_DataTable::LABEL_SUMMARY_ROW, $columnToSortBy = 'nb');
$filter->filter($table);
$this->assertEquals(3, $table->getRowsCount());
$expectedRow = new Piwik_DataTable_Row(array( Piwik_DataTable_Row::COLUMNS => array('label'=>Piwik_DataTable::LABEL_SUMMARY_ROW, 'nb' => 111)));
$this->assertTrue(Piwik_DataTable_Row::isEqual($table->getLastRow(), $expectedRow));
}
/**
* Returns table used for the tests
*
* @return Piwik_DataTable
*/
protected function getDataTableCount5()
{
$table = new Piwik_DataTable;
$table->addRow( $this->getRow0() );
$table->addRow( $this->getRow1() );
$table->addRow( $this->getRow2() );
$table->addRow( $this->getRow3() );
$table->addRow( $this->getRow4() );
return $table;
}
protected function getRow0()
{
return new Piwik_DataTable_Row(array( Piwik_DataTable_Row::COLUMNS => array('nb' => 10000, 'label'=>'amazon')));
}
protected function getRow1()
{
return new Piwik_DataTable_Row(array( Piwik_DataTable_Row::COLUMNS => array('label'=>'yahoo', 'nb' => 1000)));
}
protected function getRow2()
{
return new Piwik_DataTable_Row(array( Piwik_DataTable_Row::COLUMNS => array('label'=>'piwik', 'nb' => 100)));
}
protected function getRow3()
{
return new Piwik_DataTable_Row(array( Piwik_DataTable_Row::COLUMNS => array('label'=>'ask', 'nb' => 10)));
}
protected function getRow4()
{
return new Piwik_DataTable_Row(array( Piwik_DataTable_Row::COLUMNS => array('nb' => 1, 'label'=>'google')));
}
}
<?php
/**
* Piwik - Open source web analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
* @version $Id$
*/
class DataTable_Filter_ExcludeLowPopulationTest extends PHPUnit_Framework_TestCase
{
protected function getTestDataTable()
{
$table = new Piwik_DataTable;
$table->addRowsFromArray(
array(
array(Piwik_DataTable_Row::COLUMNS => array('label'=>'zero', 'count' => 0)),
array(Piwik_DataTable_Row::COLUMNS => array('label'=>'one', 'count' => 1)),
array(Piwik_DataTable_Row::COLUMNS => array('label'=>'onedotfive', 'count' => 1.5)),
array(Piwik_DataTable_Row::COLUMNS => array('label'=>'ten', 'count' => 10)),
array(Piwik_DataTable_Row::COLUMNS => array('label'=>'ninety', 'count' => 90)),
array(Piwik_DataTable_Row::COLUMNS => array('label'=>'hundred', 'count' => 100)),
)
);
return $table;
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_ExcludeLowPopulation
*/
public function testStandardTable()
{
$table = $this->getTestDataTable();
$filter = new Piwik_DataTable_Filter_ExcludeLowPopulation($table, 'count', 1.1);
$filter->filter($table);
$this->assertEquals(4, $table->getRowsCount());
$this->assertEquals(array(1.5, 10, 90, 100), $table->getColumn('count'));
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_ExcludeLowPopulation
*/
public function testFilterEqualOneDoesFilter()
{
$table = $this->getTestDataTable();
$filter = new Piwik_DataTable_Filter_ExcludeLowPopulation($table, 'count', 1);
$filter->filter($table);
$this->assertEquals(5, $table->getRowsCount());
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_ExcludeLowPopulation
*/
public function testFilterEqualZeroDoesFilter()
{
$table = $this->getTestDataTable();
$filter = new Piwik_DataTable_Filter_ExcludeLowPopulation($table, 'count', 0);
$filter->filter($table);
$this->assertEquals(3, $table->getRowsCount());
$this->assertEquals(array(10, 90, 100), $table->getColumn('count'));
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_ExcludeLowPopulation
*/
public function testFilterSpecifyExcludeLowPopulationThresholdDoesFilter()
{
$table = $this->getTestDataTable();
$filter = new Piwik_DataTable_Filter_ExcludeLowPopulation($table, 'count', 0, 0.4); //40%
$filter->filter($table);
$this->assertEquals(2, $table->getRowsCount());
$this->assertEquals(array(90, 100), $table->getColumn('count'));
}
/**
* Test to exclude low population filter
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_ExcludeLowPopulation
*/
function testFilterLowpop1()
{
$idcol = Piwik_DataTable_Row::COLUMNS;
$table = new Piwik_DataTable();
$rows = array(
array( $idcol => array('label'=>'google', 'nb_visits' => 897)),//0
array( $idcol => array('label'=>'ask', 'nb_visits' => -152)),//1
array( $idcol => array('label'=>'piwik', 'nb_visits' => 1.5)),//2
array( $idcol => array('label'=>'piwik2', 'nb_visits' => 1.4)),//2
array( $idcol => array('label'=>'yahoo', 'nb_visits' => 154)),//3
array( $idcol => array('label'=>'amazon', 'nb_visits' => 30)),//4
array( $idcol => array('label'=>'238949', 'nb_visits' => 0)),//5
array( $idcol => array('label'=>'Q*(%&*', 'nb_visits' => 1)),//6
array( $idcol => array('label'=>'Q*(%&*2', 'nb_visits' => -1.5)),//6
);
$table->addRowsFromArray( $rows );
$expectedtable = new Piwik_DataTable();
$rows = array(
array( $idcol => array('label'=>'google', 'nb_visits' => 897)),//0
array( $idcol => array('label'=>'piwik', 'nb_visits' => 1.5)),//2
array( $idcol => array('label'=>'piwik2', 'nb_visits' => 1.4)),//2
array( $idcol => array('label'=>'yahoo', 'nb_visits' => 154)),//3
array( $idcol => array('label'=>'amazon', 'nb_visits' => 30)),//4
);
$expectedtable->addRowsFromArray( $rows );
$filter = new Piwik_DataTable_Filter_ExcludeLowPopulation($table, 'nb_visits', 1.4);
$filter->filter($table);
$this->assertTrue(Piwik_DataTable::isEqual($table, $expectedtable));
}
}
<?php
/**
* Piwik - Open source web analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
* @version $Id$
*/
class DataTable_Filter_LimitTest extends PHPUnit_Framework_TestCase
{
/**
* Returns table used for the tests
*
* @return Piwik_DataTable
*/
protected function getDataTableCount10()
{
$table = new Piwik_DataTable;
$idcol = Piwik_DataTable_Row::COLUMNS;
$rows = array(
array( $idcol => array('label'=>'google', 'idRow' => 0)),
array( $idcol => array('label'=>'ask', 'idRow' => 1)),
array( $idcol => array('label'=>'piwik', 'idRow' => 2)),
array( $idcol => array('label'=>'yahoo', 'idRow' => 3)),
array( $idcol => array('label'=>'amazon', 'idRow' => 4)),
array( $idcol => array('label'=>'238949', 'idRow' => 5)),
array( $idcol => array('label'=>'test', 'idRow' => 6)),
array( $idcol => array('label'=>'amazing', 'idRow' => 7)),
array( $idcol => array('label'=>'great', 'idRow' => 8)),
Piwik_DataTable::ID_SUMMARY_ROW => array( $idcol => array('label'=>'summary row', 'idRow' => 9)),
);
$table->addRowsFromArray( $rows );
return $table;
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Limit
*/
public function testNormal()
{
$offset = 2;
$limit = 3;
$table = $this->getDataTableCount10();
$filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit);
$filter->filter($table);
$this->assertEquals(3, $table->getRowsCount());
$this->assertEquals(2, $table->getFirstRow()->getColumn('idRow'));
$this->assertEquals(4, $table->getLastRow()->getColumn('idRow'));
$this->assertEquals(10, $table->getRowsCountBeforeLimitFilter());
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Limit
*/
public function testLimitLessThanCountShouldReturnCountLimit()
{
$offset = 2;
$limit = 7;
$table = $this->getDataTableCount10();
$filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit);
$filter->filter($table);
$this->assertEquals(7, $table->getRowsCount());
$this->assertEquals(2, $table->getFirstRow()->getColumn('idRow'));
$this->assertEquals(8, $table->getLastRow()->getColumn('idRow'));
$this->assertEquals(10, $table->getRowsCountBeforeLimitFilter());
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Limit
*/
public function testLimitIsCountShouldNotDeleteAnything()
{
$offset = 0;
$limit = 10;
$table = $this->getDataTableCount10();
$this->assertEquals(10, $table->getRowsCountBeforeLimitFilter());
$filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit);
$filter->filter($table);
$this->assertEquals(10, $table->getRowsCount());
$this->assertEquals(0, $table->getFirstRow()->getColumn('idRow'));
$this->assertEquals(9, $table->getLastRow()->getColumn('idRow'));
$this->assertEquals(10, $table->getRowsCountBeforeLimitFilter());
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Limit
*/
public function testLimitGreaterThanCountShouldReturnCountUntilCount()
{
$offset = 5;
$limit = 20;
$table = $this->getDataTableCount10();
$this->assertEquals(10, $table->getRowsCountBeforeLimitFilter());
$filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit);
$filter->filter($table);
$this->assertEquals(5, $table->getRowsCount());
$this->assertEquals(5, $table->getFirstRow()->getColumn('idRow'));
$this->assertEquals(9, $table->getLastRow()->getColumn('idRow'));
$this->assertEquals(10, $table->getRowsCountBeforeLimitFilter());
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Limit
*/
public function testLimitIsNullShouldReturnCountIsOffset()
{
$offset = 1;
$table = $this->getDataTableCount10();
$filter = new Piwik_DataTable_Filter_Limit($table, $offset);
$filter->filter($table);
$this->assertEquals(9, $table->getRowsCount());
$this->assertEquals(1, $table->getFirstRow()->getColumn('idRow'));
$this->assertEquals(9, $table->getLastRow()->getColumn('idRow'));
$this->assertEquals(10, $table->getRowsCountBeforeLimitFilter());
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Limit
*/
public function testOffsetJustBeforeSummaryRowShouldJustReturnSummaryRow()
{
$offset = 9;
$limit = 1;
$table = $this->getDataTableCount10();
$filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit);
$filter->filter($table);
$this->assertEquals(1, $table->getRowsCount());
$this->assertEquals(9, $table->getFirstRow()->getColumn('idRow'));
$this->assertEquals(9, $table->getLastRow()->getColumn('idRow'));
$this->assertEquals(10, $table->getRowsCountBeforeLimitFilter());
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Limit
*/
public function testOffsetJustBeforeSummaryRowWithBigLimitShouldJustReturnSummaryRow()
{
$offset = 9;
$limit = 100;
$table = $this->getDataTableCount10();
$filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit);
$filter->filter($table);
$this->assertEquals(1, $table->getRowsCount());
$this->assertEquals(9, $table->getFirstRow()->getColumn('idRow'));
$this->assertEquals(9, $table->getLastRow()->getColumn('idRow'));
$this->assertEquals(10, $table->getRowsCountBeforeLimitFilter());
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Limit
*/
public function testOffsetBeforeSummaryRowShouldJustReturnRowAndSummaryRow()
{
$offset = 8;
$limit = 3;
$table = $this->getDataTableCount10();
$filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit);
$filter->filter($table);
$this->assertEquals(2, $table->getRowsCount());
$this->assertEquals(8, $table->getFirstRow()->getColumn('idRow'));
$this->assertEquals(9, $table->getLastRow()->getColumn('idRow'));
$this->assertEquals(10, $table->getRowsCountBeforeLimitFilter());
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Limit
*/
public function testOffsetGreaterThanCountShouldReturnEmptyTable()
{
$offset = 10;
$limit = 10;
$table = $this->getDataTableCount10();
$filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit);
$filter->filter($table);
$this->assertEquals(0, $table->getRowsCount());
$this->assertEquals(10, $table->getRowsCountBeforeLimitFilter());
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Limit
*/
public function testLimitIsZeroShouldReturnEmptyTable()
{
$offset = 0;
$limit = 0;
$table = $this->getDataTableCount10();
$filter = new Piwik_DataTable_Filter_Limit($table, $offset, $limit);
$filter->filter($table);
$this->assertEquals(0, $table->getRowsCount());
$this->assertEquals(10, $table->getRowsCountBeforeLimitFilter());
}
/**
* Test to filter a table with a offset, limit
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Limit
*/
public function testFilterOffsetLimit()
{
$table = new Piwik_DataTable;
$idcol = Piwik_DataTable_Row::COLUMNS;
$rows = array(
array( $idcol => array('label'=>'google')),//0
array( $idcol => array('label'=>'ask')),//1
array( $idcol => array('label'=>'piwik')),//2
array( $idcol => array('label'=>'yahoo')),//3
array( $idcol => array('label'=>'amazon')),//4
array( $idcol => array('label'=>'238975247578949')),//5
array( $idcol => array('label'=>'Q*(%&*("$&%*(&"$*")"))'))//6
);
$table->addRowsFromArray( $rows );
$expectedtable = clone $table;
$expectedtable->deleteRows(array(0,1,6));
$filter = new Piwik_DataTable_Filter_Limit($table, 2, 4);
$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->assertEquals(array_values($expectedtable->getRows()), array_values($table->getRows()));
}
/**
* Test to filter a column with a offset, limit off bound
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Limit
*/
public function testFilterOffsetLimitOffbound()
{
$table = new Piwik_DataTable;
$idcol = Piwik_DataTable_Row::COLUMNS;
$rows = array(
array( $idcol => array('label'=>'google')),//0
array( $idcol => array('label'=>'ask')),//1
array( $idcol => array('label'=>'piwik')),//2
array( $idcol => array('label'=>'yahoo')),//3
array( $idcol => array('label'=>'amazon')),//4
array( $idcol => array('label'=>'238975247578949')),//5
array( $idcol => array('label'=>'Q*(%&*("$&%*(&"$*")"))'))//6
);
$table->addRowsFromArray( $rows );
$expectedtable = clone $table;
$expectedtable->deleteRows(array(0,1,3,4,5,6));
$filter = new Piwik_DataTable_Filter_Limit($table, 2, 1);
$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->assertEquals(array_values($expectedtable->getRows()), array_values($table->getRows()));
}
/**
* Test to filter a column with a offset, limit 2
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Limit
*/
public function testFilterOffsetLimit2()
{
$table = new Piwik_DataTable;
$idcol = Piwik_DataTable_Row::COLUMNS;
$rows = array(
array( $idcol => array('label'=>'google')),//0
array( $idcol => array('label'=>'ask')),//1
array( $idcol => array('label'=>'piwik')),//2
array( $idcol => array('label'=>'yahoo')),//3
array( $idcol => array('label'=>'amazon')),//4
array( $idcol => array('label'=>'238975247578949')),//5
array( $idcol => array('label'=>'Q*(%&*("$&%*(&"$*")"))'))//6
);
$table->addRowsFromArray( $rows );
$expectedtable = clone $table;
$filter = new Piwik_DataTable_Filter_Limit($table, 0, 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->assertEquals(array_values($expectedtable->getRows()), array_values($table->getRows()));
}
/**
* Test to filter a column with a offset, limit 3
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Limit
*/
public function testFilterOffsetLimit3()
{
$table = new Piwik_DataTable;
$idcol = Piwik_DataTable_Row::COLUMNS;
$rows = array(
array( $idcol => array('label'=>'google')),//0
array( $idcol => array('label'=>'ask')),//1
array( $idcol => array('label'=>'piwik')),//2
array( $idcol => array('label'=>'yahoo')),//3
array( $idcol => array('label'=>'amazon')),//4
array( $idcol => array('label'=>'238975247578949')),//5
array( $idcol => array('label'=>'Q*(%&*("$&%*(&"$*")"))'))//6
);
$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->assertEquals(array_values($expectedtable->getRows()), array_values($table->getRows()));
}
}
<?php
/**
* Piwik - Open source web analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
* @version $Id$
*/
class DataTable_Filter_PatternRecursiveTest extends PHPUnit_Framework_TestCase
{
/**
* Returns a data table for testing
* @return Piwik_DataTable
*/
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;
}
/**
* Dataprovider for testFilterPattern
*/
public function getTestData()
{
return array(
// level 0
array(array('hoo', array(1))),
// level 1
array(array('path1', array(0))),
// level 2
array(array('path1-index-page', array(0))),
// not found
array(array('not found', array())),
);
}
/**
* Test to filter a column with a pattern
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_PatternRecursive
* @dataProvider getTestData
*/
public function testFilterPattern($test)
{
$table = $this->getTable();
$rowIds = array_keys($table->getRows());
$pattern = $test[0];
$expectedRows = $test[1];
$rowToDelete = array_diff($rowIds, $expectedRows);
$expectedtable = clone $table;
$expectedtable->deleteRows($rowToDelete);
$filteredTable = clone $table;
$filteredTable->filter('PatternRecursive', array('label', $pattern));
$this->assertEquals($expectedtable->getRows(), $filteredTable->getRows());
}
}
<?php
/**
* Piwik - Open source web analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
* @version $Id$
*/
class DataTable_Filter_PatternTest extends PHPUnit_Framework_TestCase
{
/**
* Dataprovider for testFilterPattern
*/
public function getTestData()
{
return array(
array(array('ask', array(1))),
array(array('oo', array(0,3))),
array(array('^yah', array(3))),
array(array('\*', array(6))),
array(array('2/4', array(5))),
array(array('amazon|yahoo', array(3,4))),
);
}
/**
* 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());
}
}
<?php
/**
* Piwik - Open source web analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
* @version $Id$
*/
class DataTable_Filter_SortTest extends PHPUnit_Framework_TestCase
{
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Sort
*/
public function testNormalSortDescending ()
{
$table = new Piwik_DataTable();
$table->addRowsFromArray(array(
array(Piwik_DataTable_Row::COLUMNS => array('label' => 'ask', 'count' => 100)),
array(Piwik_DataTable_Row::COLUMNS => array('label' => 'nintendo', 'count' => 0)),
array(Piwik_DataTable_Row::COLUMNS => array('label' => 'yahoo', 'count' => 10)
)));
$filter = new Piwik_DataTable_Filter_Sort($table, 'count', 'desc');
$filter->filter($table);
$expectedOrder = array('ask' , 'yahoo' , 'nintendo');
$this->assertEquals($expectedOrder, $table->getColumn('label'));
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Sort
*/
public function testNormalSortAscending ()
{
$table = new Piwik_DataTable();
$table->addRowsFromArray(array(
array(Piwik_DataTable_Row::COLUMNS => array('label' => 'ask', 'count' => 100.5)),
array(Piwik_DataTable_Row::COLUMNS => array('label' => 'nintendo', 'count' => 0.5)),
array(Piwik_DataTable_Row::COLUMNS => array('label' => 'yahoo', 'count' => 10.5)
)));
$filter = new Piwik_DataTable_Filter_Sort($table, 'count', 'asc');
$filter->filter($table);
$expectedOrder = array('nintendo' , 'yahoo' , 'ask');
$this->assertEquals($expectedOrder, $table->getColumn('label'));
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Sort
*/
public function testMissingColumnValuesShouldAppearLastAfterSortAsc ()
{
$table = new Piwik_DataTable();
$table->addRowsFromArray(array(
array(Piwik_DataTable_Row::COLUMNS => array('label' => 'nintendo', 'count' => 1)),
array(Piwik_DataTable_Row::COLUMNS => array('label' => 'nocolumn')),
array(Piwik_DataTable_Row::COLUMNS => array('label' => 'nocolumnbis')),
array(Piwik_DataTable_Row::COLUMNS => array('label' => 'ask', 'count' => 2)),
array(Piwik_DataTable_Row::COLUMNS => array('label' => 'amazing')),
Piwik_DataTable::ID_SUMMARY_ROW => array(Piwik_DataTable_Row::COLUMNS => array('label' => 'summary' , 'count' => 10)
)));
$filter = new Piwik_DataTable_Filter_Sort($table, 'count', 'asc');
$filter->filter($table);
$expectedOrder = array('nintendo' , 'ask' , 'amazing' , 'nocolumnbis' , 'nocolumn' , 'summary');
$this->assertEquals($expectedOrder, $table->getColumn('label'));
}
/**
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Sort
*/
public function testMissingColumnValuesShouldAppearLastAfterSortDesc ()
{
$table = new Piwik_DataTable();
$table->addRowsFromArray(array(
array(Piwik_DataTable_Row::COLUMNS => array('label' => 'nintendo' , 'count' => 1)),
array(Piwik_DataTable_Row::COLUMNS => array('label' => 'ask' , 'count' => 2)),
array(Piwik_DataTable_Row::COLUMNS => array('label' => 'amazing')),
Piwik_DataTable::ID_SUMMARY_ROW => array(Piwik_DataTable_Row::COLUMNS => array('label' => 'summary' , 'count' => 10)
)));
$filter = new Piwik_DataTable_Filter_Sort($table, 'count', 'desc');
$filter->filter($table);
$expectedOrder = array('ask' , 'nintendo' , 'amazing' , 'summary');
$this->assertEquals($expectedOrder, $table->getColumn('label'));
}
/**
* Test to sort by label
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Sort
*/
public function testFilterSortString ()
{
$idcol = Piwik_DataTable_Row::COLUMNS;
$table = new Piwik_DataTable();
$rows = array(
array($idcol => array('label' => 'google')) , //0
array($idcol => array('label' => 'ask')) , //1
array($idcol => array('label' => 'piwik')) , //2
array($idcol => array('label' => 'yahoo')) , //3
array($idcol => array('label' => 'amazon')) , //4
array($idcol => array('label' => '238975247578949')) , //5
array($idcol => array('label' => 'Q*(%&*("$&%*(&"$*")"))')) //6
);
$table->addRowsFromArray($rows);
$expectedtable = new Piwik_DataTable();
$rows = array(
array($idcol => array('label' => '238975247578949')) , //5
array($idcol => array('label' => 'amazon')) , //4
array($idcol => array('label' => 'ask')) , //1
array($idcol => array('label' => 'google')) , //0
array($idcol => array('label' => 'piwik')) , //2
array($idcol => array('label' => 'Q*(%&*("$&%*(&"$*")"))')) , //6
array($idcol => array('label' => 'yahoo') )//3
);
$expectedtable->addRowsFromArray($rows);
$expectedtableReverse = new Piwik_DataTable();
$expectedtableReverse->addRowsFromArray(array_reverse($rows));
$filter = new Piwik_DataTable_Filter_Sort($table, 'label', 'asc');
$filter->filter($table);
$this->assertTrue(Piwik_DataTable::isEqual($expectedtable, $table));
$filter = new Piwik_DataTable_Filter_Sort($table, 'label', 'desc');
$filter->filter($table);
$this->assertTrue(Piwik_DataTable::isEqual($table, $expectedtableReverse));
}
/**
* Test to sort by visit
*
* @group Core
* @group DataTable
* @group DataTable_Filter
* @group DataTable_Filter_Sort
*/
public function testFilterSortNumeric ()
{
$idcol = Piwik_DataTable_Row::COLUMNS;
$table = new Piwik_DataTable();
$rows = array(
array($idcol => array('label' => 'google', 'nb_visits' => 897)) , //0
array($idcol => array('label' => 'ask', 'nb_visits' => - 152)) , //1
array($idcol => array('label' => 'piwik', 'nb_visits' => 1.5)) , //2
array($idcol => array('label' => 'yahoo', 'nb_visits' => 154)) , //3
array($idcol => array('label' => 'amazon', 'nb_visits' => 30)) , //4
array($idcol => array('label' => '238949', 'nb_visits' => 0)) , //5
array($idcol => array('label' => 'Q*(%&*', 'nb_visits' => 1))//6
);
$table->addRowsFromArray($rows);
$expectedtable = new Piwik_DataTable();
$rows = array(
array($idcol => array('label' => 'ask', 'nb_visits' => - 152)) , //1
array($idcol => array('label' => '238949', 'nb_visits' => 0)) , //5
array($idcol => array('label' => 'Q*(%&*', 'nb_visits' => 1)) , //6
array($idcol => array('label' => 'piwik', 'nb_visits' => 1.5)) , //2
array($idcol => array('label' => 'amazon', 'nb_visits' => 30)) , //4
array($idcol => array('label' => 'yahoo', 'nb_visits' => 154)) , //3
array($idcol => array('label' => 'google', 'nb_visits' => 897))//0
);
$expectedtable->addRowsFromArray($rows);
$expectedtableReverse = new Piwik_DataTable();
$expectedtableReverse->addRowsFromArray(array_reverse($rows));
$filter = new Piwik_DataTable_Filter_Sort($table, 'nb_visits', 'asc');
$filter->filter($table);
$this->assertTrue(Piwik_DataTable::isEqual($table, $expectedtable));
$filter = new Piwik_DataTable_Filter_Sort($table, 'nb_visits', 'desc');
$filter->filter($table);
$this->assertTrue(Piwik_DataTable::isEqual($table, $expectedtableReverse));
}
}
Ce diff est replié.
<?php
/**
* Piwik - Open source web analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
* @version $Id$
*/
class TranslationWriterTest extends PHPUnit_Framework_TestCase
{
/**
* Dataprovider for testClean
*/
public function getCleanTestData()
{
return array(
// empty string
array("", ''),
// newline
array("\n", ''),
// leading and trailing whitespace
array(" a \n", 'a'),
// single / double quotes
array(" &quot;it&#039;s&quot; ", '"it\'s"'),
// html special characters
array("&lt;tag&gt;", '<tag>'),
// other html entities
array("&hellip;", '…'),
);
}
/**
* @group Core
* @group TranslationWriter
* @dataProvider getCleanTestData
*/
public function testClean($data, $expected)
{
$this->assertEquals($expected, Piwik_TranslationWriter::clean($data));
}
/**
* Dataprovider for testQuote
*/
public function getQuoteTestData()
{
return array(
// alphanumeric
array('abc 123', "'abc 123'"),
// newline
array("\n", "'
'"),
array('
', "'
'"),
// tab
array(' ', "' '"),
// single quote
array("it's", "'it\'s'"),
);
}
/**
* @group Core
* @group TranslationWriter
* @dataProvider getQuoteTestData
*/
public function testQuote($data, $expected)
{
if(Piwik_Common::isWindows() && $data == "\n")
{
return;
}
$this->assertEquals($expected, Piwik_TranslationWriter::quote($data));
}
/**
* @group Core
* @group TranslationWriter
* @expectedException Exception
*/
public function testGetTranslationPathInvalidLang()
{
$path = Piwik_TranslationWriter::getTranslationPath('../index');
}
/**
* @group Core
* @group TranslationWriter
* @expectedException Exception
*/
public function testGetTranslationPathInvalidBasePath()
{
$path = Piwik_TranslationWriter::getTranslationPath('en', 'core');
}
/**
* @group Core
* @group TranslationWriter
*/
public function testGetTranslationPath()
{
// implicit base path
$this->assertEquals(PIWIK_INCLUDE_PATH . '/lang/en.php', Piwik_TranslationWriter::getTranslationPath('en'));
// explicit base path
$this->assertEquals(PIWIK_INCLUDE_PATH . '/lang/en.php', Piwik_TranslationWriter::getTranslationPath('en', 'lang'));
$this->assertEquals(PIWIK_INCLUDE_PATH . '/tmp/en.php', Piwik_TranslationWriter::getTranslationPath('en', 'tmp'));
}
/**
* @group Core
* @group TranslationWriter
* @expectedException Exception
*/
public function testLoadTranslationInvalidLang()
{
$translations = Piwik_TranslationWriter::loadTranslation('a');
}
/**
* @group Core
* @group TranslationWriter
*/
public function testLoadTranslation()
{
require PIWIK_INCLUDE_PATH . '/lang/en.php';
$this->assertTrue(is_array($translations));
$englishTranslations = Piwik_TranslationWriter::loadTranslation('en');
$this->assertEquals(count($translations), count($englishTranslations));
$this->assertEquals(0, count(array_diff($translations, $englishTranslations)));
$this->assertEquals(0, count(array_diff_assoc($translations, $englishTranslations)));
}
/**
* @group Core
* @group TranslationWriter
*/
public function testSaveTranslation()
{
$path = Piwik_TranslationWriter::getTranslationPath('en', 'tmp');
$translations = array(
'General_Locale' => 'en_CA.UTF-8',
'General_Id' => 'Id',
'Goals_Goals' => 'Goals',
'Plugin_Body' => "Message\nBody",
);
@unlink($path);
$rc = Piwik_TranslationWriter::saveTranslation($translations, $path);
$this->assertNotEquals(false, $rc);
$contents = file_get_contents($path);
$expected = "<?php
\$translations = array(
\t'General_Locale' => 'en_CA.UTF-8',
\t'General_Id' => 'Id',
\t'Goals_Goals' => 'Goals',
\t// FOR REVIEW
\t'Plugin_Body' => 'Message
Body',
);
";
if(Piwik_Common::isWindows()) $expected = str_replace("\r\n", "\n", $expected);
$this->assertEquals($expected, $contents);
}
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter