'test'); $b = array('test' => 1, 1 => 2100); $expected = array( 'label' => 'test', 'test' => 1, 1 => 2100 ); // $this->assertEqual( array_merge($a,$b), $expected); $this->assertEqual( $a+$b, $expected); } /** * test reading static attribute of a variable class */ public function test_staticAttr() { // use this trick to read the static attribute of the class // $class::$methodsNotToPublish doesn't work $vars = get_class_vars("test_staticAttr"); $this->assertEqual( $vars['a'], 'testa' ); } static $countSort=0; function test_usortcalledHowManyTimes() { $a=array(); //generate fake 1000 elements access for($i=0;$i<1000;$i++) { $a[]=mt_rand(); } $timer = new Piwik_Timer; function countSort($a,$b) { Test_PHP_Related::$countSort++; return $a < $b ? -1 : 1; } //sort using usort usort($a, "countSort"); // in the function used count nb of times called // print("called ".self::$countSort." times to sort the 1000 elements array"); // echo $timer; } /** * __get is not called when reading a static attribute from a class... snif */ public function test_magicMethodStaticAttr() { $val = test_magicMethodStaticAttr::$test; $this->assertEqual( $val, "test" ); } function test_array2XML() { function array_to_simplexml($array, $name="config" ,&$xml=null ) { if(is_null($xml)) { $xml = new SimpleXMLElement("<{$name}/>"); } foreach($array as $key => $value) { if(is_array($value)) { $xml->addChild($key); array_to_simplexml($value, $name, $xml->$key); } else { $xml->addChild($key, $value); } } return $xml; } $test=array("TEST"=>"nurso", "none"=>null, "a"=>"b", array( "c"=>"d", array("d"=>"e")) ); $xml = array_to_simplexml($test); // print("
START");print($xml);print("START2");
//		print_r($xml->asXML());
//		print("
"); } /** * misc tests for performance * * - we try to serialize data when data is a huge multidimensional array * - we then compare the results when data is the huge array * but split in hundreds of smaller arrays. * * clearly the best solution is to split the array in multiple small arrays */ public function _test_serializeHugeTable() { $timer = new Piwik_Timer; $a=array(); //generate table for($i=0;$i<100;$i++) { $category=array(); for($j=0;$j<10;$j++) { for($k=0;$k<20;$k++) { $infoPage=array(10,50,1500,15000,1477,15669,15085,45454,87877,222); $a[$i][$j][] = $infoPage; } } for($k=0;$k<15;$k++) { $infoPage=array(154548781,10,50,10,1477,15669,15085); $a[$i][] = $infoPage; } } //echo "
after generation array = ". $timer; //echo "
count array = ". count($a,1); $serialized = serialize($a); $size = round(strlen($serialized)/1024/1024,3); //echo "
size serialized string = ". $size."mb"; //echo "
after serialization array = ". $timer; $serialized = gzcompress($serialized); $size = round(strlen($serialized)/1024/1024,3); //echo "
size compressed string = ". $size."mb"; //echo "
after compression array = ". $timer; $a = gzuncompress($serialized); //echo "
after uncompression array = ". $timer; $a = unserialize($a); //echo "
after unserialization array = ". $timer; } public function _test_serializeManySmallTable() { $timer = new Piwik_Timer; $a=array(); //echo "
"; //generate table for($i=0;$i<100;$i++) { $category=array(); for($j=0;$j<10;$j++) { for($k=0;$k<20;$k++) { $infoPage=array(10,50,1500,15000,1477,15669,15085,45454,87877,222); $a[$i][$j][] = $infoPage; } } for($k=0;$k<15;$k++) { $infoPage=array(-1,10,50,10,1477,15669,15085); $a[$i][] = $infoPage; } } //echo "
after generation array = ". $timer; //echo "
count array = ". count($a,1); $allSerialized=array(); for($i=0;$i<100;$i++) { for($j=0;$j<10;$j++) { $allSerialized[] = serialize($a[$i][$j]); } $allSerialized[] = serialize( array_slice($a[$i], 10,15)); } //echo "
after serialize the subs-arrays = ". $timer; //echo "
count array = ". count($allSerialized,1); $size=0; foreach($allSerialized as $str) { $size+=strlen($str); } $size = round($size/1024/1024,3); //echo "
size serialized string = ". $size."mb"; $acompressed=array(); $size = 0; foreach($allSerialized as $str) { $compressed=gzcompress($str); $size+=strlen($compressed); $acompressed[] = $compressed; } $size = round($size/1024/1024,3); //echo "
size compressed string = ". $size."mb"; //echo "
after compression all sub arrays = ". $timer; } function test_functionReturnNothing() { function givemenothing() { $a = 4; } $return = givemenothing(); $this->assertFalse(isset($return)); $this->assertTrue(empty($return)); $this->assertTrue(!is_int($return)); $this->assertTrue(!is_string($return)); $this->assertTrue(!is_bool($return)); } function test_unserializeObject() { // $o = new Piwik_DataTable; // $o = 'O:15:"Piwik_DataTable":6:{s:7:"�*�rows";a:10:{i:0;O:19:"Piwik_DataTable_Row":1:{s:1:"c";a:3:{i:0;a:12:{s:5:"label";s:6:"/index";s:9:"nb_visits";s:2:"17";s:7:"nb_hits";s:2:"17";s:23:"entry_nb_unique_visitor";s:2:"12";s:15:"entry_nb_visits";s:2:"16";s:16:"entry_nb_actions";s:2:"19";s:22:"entry_sum_visit_length";s:4:"8102";s:18:"entry_bounce_count";s:2:"15";s:22:"exit_nb_unique_visitor";s:2:"12";s:14:"exit_nb_visits";s:2:"16";s:17:"exit_bounce_count";s:2:"15";s:14:"sum_time_spent";s:4:"3292";}i:1;a:0:{}i:3;N;}}i:1;O:36:"Piwik_DataTable_Row_DataTableSummary":1:{s:1:"c";a:3:{i:0;a:12:{s:5:"label";i:1;s:9:"nb_visits";i:7;s:7:"nb_hits";i:7;s:23:"entry_nb_unique_visitor";i:6;s:15:"entry_nb_visits";i:6;s:16:"entry_nb_actions";i:6;s:22:"entry_sum_visit_length";i:60;s:18:"entry_bounce_count";i:6;s:22:"exit_nb_unique_visitor";i:6;s:14:"exit_nb_visits";i:6;s:17:"exit_bounce_count";i:6;s:14:"sum_time_spent";i:2284;}i:1;a:1:{s:18:"databaseSubtableId";i:38;}i:3;i:193;}}i:2;O:36:"Piwik_DataTable_Row_DataTableSummary":1:{s:1:"c";a:3:{i:0;a:11:{s:5:"label";i:9;s:9:"nb_visits";i:6;s:7:"nb_hits";i:6;s:23:"entry_nb_unique_visitor";i:6;s:15:"entry_nb_visits";i:6;s:16:"entry_nb_actions";i:6;s:22:"entry_sum_visit_length";i:60;s:18:"entry_bounce_count";i:6;s:22:"exit_nb_unique_visitor";i:6;s:14:"exit_nb_visits";i:6;s:17:"exit_bounce_count";i:6;}i:1;a:1:{s:18:"databaseSubtableId";i:18;}i:3;i:173;}}i:3;O:36:"Piwik_DataTable_Row_DataTableSummary":1:{s:1:"c";a:3:{i:0;a:11:{s:5:"label";i:3;s:9:"nb_visits";i:6;s:7:"nb_hits";i:6;s:23:"entry_nb_unique_visitor";i:6;s:15:"entry_nb_visits";i:6;s:16:"entry_nb_actions";i:6;s:22:"entry_sum_visit_length";i:60;s:18:"entry_bounce_count";i:6;s:22:"exit_nb_unique_visitor";i:6;s:14:"exit_nb_visits";i:6;s:17:"exit_bounce_count";i:6;}i:1;a:1:{s:18:"databaseSubtableId";i:9;}i:3;i:164;}}i:4;O:36:"Piwik_DataTable_Row_DataTableSummary":1:{s:1:"c";a:3:{i:0;a:12:{s:5:"label";s:1:"f";s:9:"nb_visits";i:6;s:7:"nb_hits";i:6;s:23:"entry_nb_unique_visitor";i:4;s:15:"entry_nb_visits";i:4;s:16:"entry_nb_actions";i:4;s:22:"entry_sum_visit_length";i:40;s:18:"entry_bounce_count";i:4;s:22:"exit_nb_unique_visitor";i:5;s:14:"exit_nb_visits";i:5;s:17:"exit_bounce_count";i:4;s:14:"sum_time_spent";i:2623;}i:1;a:1:{s:18:"databaseSubtableId";i:31;}i:3;i:186;}}i:5;O:19:"Piwik_DataTable_Row":1:{s:1:"c";a:3:{i:0;a:11:{s:5:"label";s:2:"/9";s:9:"nb_visits";s:1:"5";s:7:"nb_hits";s:1:"5";s:23:"entry_nb_unique_visitor";s:1:"5";s:15:"entry_nb_visits";s:1:"5";s:16:"entry_nb_actions";s:1:"5";s:22:"entry_sum_visit_length";s:2:"50";s:18:"entry_bounce_count";s:1:"5";s:22:"exit_nb_unique_visitor";s:1:"5";s:14:"exit_nb_visits";s:1:"5";s:17:"exit_bounce_count";s:1:"5";}i:1;a:0:{}i:3;N;}}i:6;O:36:"Piwik_DataTable_Row_DataTableSummary":1:{s:1:"c";a:3:{i:0;a:12:{s:5:"label";s:1:"e";s:9:"nb_visits";i:5;s:7:"nb_hits";i:5;s:23:"entry_nb_unique_visitor";i:5;s:15:"entry_nb_visits";i:5;s:16:"entry_nb_actions";i:11;s:22:"entry_sum_visit_length";i:15972;s:18:"entry_bounce_count";i:3;s:22:"exit_nb_unique_visitor";i:3;s:14:"exit_nb_visits";i:3;s:17:"exit_bounce_count";i:3;s:14:"sum_time_spent";i:4711;}i:1;a:1:{s:18:"databaseSubtableId";i:22;}i:3;i:177;}}i:7;O:36:"Piwik_DataTable_Row_DataTableSummary":1:{s:1:"c";a:3:{i:0;a:12:{s:5:"label";s:1:"g";s:9:"nb_visits";i:4;s:7:"nb_hits";i:4;s:23:"entry_nb_unique_visitor";i:4;s:15:"entry_nb_visits";i:4;s:16:"entry_nb_actions";i:5;s:22:"entry_sum_visit_length";i:2267;s:18:"entry_bounce_count";i:3;s:22:"exit_nb_unique_visitor";i:3;s:14:"exit_nb_visits";i:3;s:17:"exit_bounce_count";i:3;s:14:"sum_time_spent";i:2237;}i:1;a:1:{s:18:"databaseSubtableId";i:28;}i:3;i:183;}}i:8;O:19:"Piwik_DataTable_Row":1:{s:1:"c";a:3:{i:0;a:11:{s:5:"label";s:2:"/e";s:9:"nb_visits";s:1:"4";s:7:"nb_hits";s:1:"4";s:23:"entry_nb_unique_visitor";s:1:"3";s:15:"entry_nb_visits";s:1:"3";s:16:"entry_nb_actions";s:1:"3";s:22:"entry_sum_visit_length";s:2:"30";s:18:"entry_bounce_count";s:1:"3";s:22:"exit_nb_unique_visitor";s:1:"4";s:14:"exit_nb_visits";s:1:"4";s:17:"exit_bounce_count";s:1:"3";}i:1;a:0:{}i:3;N;}}i:9;O:19:"Piwik_DataTable_Row":1:{s:1:"c";a:3:{i:0;a:11:{s:5:"label";s:2:"/f";s:9:"nb_visits";s:1:"4";s:7:"nb_hits";s:1:"4";s:23:"entry_nb_unique_visitor";s:1:"4";s:15:"entry_nb_visits";s:1:"4";s:16:"entry_nb_actions";s:1:"4";s:22:"entry_sum_visit_length";s:2:"40";s:18:"entry_bounce_count";s:1:"4";s:22:"exit_nb_unique_visitor";s:1:"4";s:14:"exit_nb_visits";s:1:"4";s:17:"exit_bounce_count";s:1:"4";}i:1;a:0:{}i:3;N;}}}s:12:"�*�currentId";i:163;s:13:"�*�depthLevel";i:0;s:19:"�*�indexNotUpToDate";b:1;s:16:"�*�queuedFilters";a:0:{}s:29:"�*�rowsCountBeforeLimitFilter";i:34;}'; // $o = unserialize($o); } }