datatable.test.php
来自「一款可以和GOOGLE媲美的开源统计系统,运用AJAX.功能强大. 无色提示:」· PHP 代码 · 共 904 行 · 第 1/3 页
PHP
904 行
$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->loadFromArray( $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->loadFromArray( $rows ); $expectedtableReverse = new Piwik_DataTable; $expectedtableReverse->loadFromArray(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 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)),//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->loadFromArray( $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->loadFromArray( $rows ); $filter = new Piwik_DataTable_Filter_ExcludeLowPopulation($table, 'nb_visits', 1.4); $this->assertTrue(Piwik_DataTable::isEqual($table, $expectedtable)); } /** * for all datatable->addDatatable tests we check that * - row uniqueness is based on the label + presence of the SUBTABLE id * => the label is the criteria used to match 2 rows in 2 datatable * - no metadata are lost in the first datatable rows that have been changed * - when a subtable */ /** * add an empty datatable to a normal datatable */ public function test_addSimpleNoRowTable2() { $table = $this->getDataTable1ForTest(); $tableEmpty = new Piwik_DataTable; $tableAfter = clone $table; $tableAfter->addDataTable($tableEmpty); $this->assertTrue( Piwik_DataTable::isEqual($table, $tableAfter) ); } /** * add a normal datatable to an empty datatable */ public function test_addSimpleNoRowTable1() { $table = $this->getDataTable1ForTest(); $tableEmpty = new Piwik_DataTable; $tableAfter = clone $tableEmpty; $tableEmpty->addDataTable($table); $this->assertTrue( Piwik_DataTable::isEqual($tableEmpty, $table) ); } /** * add to the datatable another datatable// they don't have any row in common */ public function test_addSimpleNoCommonRow() { $table1 = $this->getDataTable1ForTest(); $table2 = $this->getDataTable2ForTest(); $table1->addDataTable($table2); $rowsExpected = array_merge($this->getRowsDataTable1ForTest(),$this->getRowsDataTable2ForTest()); $tableExpected = new Piwik_DataTable; $tableExpected->loadFromArray( $rowsExpected ); $this->assertTrue( Piwik_DataTable::isEqual($table1, $tableExpected) ); } /** * add 2 datatable with some common rows */ public function test_addSimpleSomeCommonRow() { $idcol = Piwik_DataTable_Row::COLUMNS; $rows = array( array( $idcol => array('label'=>'google', 'visits' => 1)), array( $idcol => array('label'=>'ask', 'visits' => 2)), array( $idcol => array('label'=>'123', 'visits' => 2)), Piwik_DataTable::ID_SUMMARY_ROW => array( $idcol => array('label'=>Piwik_DataTable::LABEL_SUMMARY_ROW, 'visits' => 7)) ); $table = new Piwik_DataTable; $table->loadFromArray( $rows ); $rows2 = array( array( $idcol => array('label'=>'test', 'visits' => 1)), array( $idcol => array('label'=>'ask', 'visits' => 111)), array( $idcol => array('label'=>' google ', 'visits' => 5)), array( $idcol => array('label'=>'123', 'visits' => 2)), ); $table2 = new Piwik_DataTable; $table2->loadFromArray( $rows2 ); $table->addDataTable($table2); $rowsExpected = array( array( $idcol => array('label'=>'google', 'visits' => 1)), array( $idcol => array('label'=>'ask', 'visits' => 113)), array( $idcol => array('label'=>'123', 'visits' => 4)), array( $idcol => array('label'=>'test', 'visits' => 1)), array( $idcol => array('label'=>' google ', 'visits' => 5)), Piwik_DataTable::ID_SUMMARY_ROW => array( $idcol => array('label'=>Piwik_DataTable::LABEL_SUMMARY_ROW, 'visits' => 7)) ); $tableExpected = new Piwik_DataTable; $tableExpected->loadFromArray( $rowsExpected ); $this->assertTrue( Piwik_DataTable::isEqual($table, $tableExpected) ); } /** * add 2 datatable with only common rows */ public function test_addSimpleAllCommonRow() { $idcol = Piwik_DataTable_Row::COLUMNS; $rows = array( array( $idcol => array('label'=>'google', 'visits' => 1)), array( $idcol => array('label'=>'ask', 'visits' => 2)), array( $idcol => array('label'=>'123', 'visits' => 2)), Piwik_DataTable::ID_SUMMARY_ROW => array( $idcol => array('label'=>Piwik_DataTable::LABEL_SUMMARY_ROW, 'visits' => 7)) ); $table = new Piwik_DataTable; $table->loadFromArray( $rows ); $rows2 = array( array( $idcol => array('label'=>'google', 'visits' => -1)), array( $idcol => array('label'=>'ask', 'visits' => 0)), array( $idcol => array('label'=>'123', 'visits' => 1.5)), Piwik_DataTable::ID_SUMMARY_ROW => array( $idcol => array('label'=>Piwik_DataTable::LABEL_SUMMARY_ROW, 'visits' => 8)) ); $table2 = new Piwik_DataTable; $table2->loadFromArray( $rows2 ); $table->addDataTable($table2); $rowsExpected = array( array( $idcol => array('label'=>'google', 'visits' => 0)), array( $idcol => array('label'=>'ask', 'visits' => 2)), array( $idcol => array('label'=>'123', 'visits' => 3.5)), Piwik_DataTable::ID_SUMMARY_ROW => array( $idcol => array('label'=>Piwik_DataTable::LABEL_SUMMARY_ROW, 'visits' => 15)) ); $tableExpected = new Piwik_DataTable; $tableExpected->loadFromArray( $rowsExpected ); $this->assertTrue( Piwik_DataTable::isEqual($table, $tableExpected) ); } /** * test add 2 different tables to the same table */ public function test_addDataTable2times() { $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->loadFromArray( $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->loadFromArray( $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->loadFromArray( $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->loadFromArray( $rowsExpected ); $this->assertTrue( Piwik_DataTable::isEqual($table, $tableExpected) ); } protected function getDataTable1ForTest() { $rows = $this->getRowsDataTable1ForTest(); $table = new Piwik_DataTable; $table->loadFromArray( $rows ); return $table; } protected function getDataTable2ForTest() { $rows = $this->getRowsDataTable2ForTest(); $table = new Piwik_DataTable; $table->loadFromArray( $rows ); return $table; } protected function getRowsDataTable1ForTest() { $rows = array( array( Piwik_DataTable_Row::COLUMNS => array('label'=>'google', 'visits' => 1)), array( Piwik_DataTable_Row::COLUMNS => array('label'=>'ask', 'visits' => 2)), array( Piwik_DataTable_Row::COLUMNS => array('label'=>'123', 'visits' => 2)), Piwik_DataTable::ID_SUMMARY_ROW => array( Piwik_DataTable_Row::COLUMNS => array('label'=>Piwik_DataTable::LABEL_SUMMARY_ROW, 'visits' => 4)) ); return $rows; } protected function getRowsDataTable2ForTest() { $rows = array( array( Piwik_DataTable_Row::COLUMNS => array('label'=>'test', 'visits' => 1)), array( Piwik_DataTable_Row::COLUMNS => array('label'=>' google ', 'visits' => 3)), array( Piwik_DataTable_Row::COLUMNS => array('label'=>'123a', 'visits' => 2)), ); return $rows; } }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?