--TEST--
Test dirname() function : basic funtionality
--FILE--
<?php
/* Prototype: string dirname ( string $path );
   Description: Returns directory name component of path.
*/
$file_paths = array (
  
/* simple paths */
  
"bar",
  
"/foo/bar",
  
"foo/bar",
  
"/bar",
  
"bar/",
  
"/bar/",
  
"/foo/bar/",
  
"foo/bar/",
  
"/bar/",
  
  
/* path with only files and trailing slashes*/
  
"/foo/bar.gz",
  
"foo/bar.gz",
  
"bar.gz",
  
"bar.gz/",
  
"/bar.gz",  
  
"/bar.gz/",
  
"/foo/bar.gz/",
  
"foo/bar.gz/",
  
"/bar.gz/",  
 
  
/* path with file extension and trailing slashes */
  
"/.gz",
  
".gz",
  
"/foo/.gz",
  
".gz/",
  
"/foo/.gz/",
  
"foo/.gz/",

  
/* paths with binary value to check if the function is binary safe*/
  
"foo".chr(0)."bar",
  
"/foo".chr(0)."bar/",
  
"/foo".chr(0)."bar",
  
"foo".chr(0)."bar/",
  
"/foo".chr(0)."bar/t.gz"
);

function 
check_dirname$paths ) {
   
$loop_counter 0;
   
$noOfPaths count($paths);
   for( ; 
$loop_counter $noOfPaths$loop_counter++ ) {
     echo 
"\n--Iteration ";
     echo 
$loop_counter 1
     echo 
" --\n";
     
var_dumpdirname($paths[$loop_counter]) );
   }
}

echo 
"*** Testing basic operations ***\n";
check_dirname$file_paths );

echo 
"Done\n";
?>

--EXPECTREGEX--
\*\*\* Testing basic operations \*\*\*

--Iteration 1 --
string\(1\) "."

--Iteration 2 --
string\(4\) "(\\|\/)foo"

--Iteration 3 --
string\(3\) "foo"

--Iteration 4 --
string\(1\) "(\\|\/)"

--Iteration 5 --
string\(1\) "."

--Iteration 6 --
string\(1\) "(\\|\/)"

--Iteration 7 --
string\(4\) "(\\|\/)foo"

--Iteration 8 --
string\(3\) "foo"

--Iteration 9 --
string\(1\) "(\\|\/)"

--Iteration 10 --
string\(4\) "(\\|\/)foo"

--Iteration 11 --
string\(3\) "foo"

--Iteration 12 --
string\(1\) "."

--Iteration 13 --
string\(1\) "."

--Iteration 14 --
string\(1\) "(\\|\/)"

--Iteration 15 --
string\(1\) "(\\|\/)"

--Iteration 16 --
string\(4\) "(\\|\/)foo"

--Iteration 17 --
string\(3\) "foo"

--Iteration 18 --
string\(1\) "(\\|\/)"

--Iteration 19 --
string\(1\) "(\\|\/)"

--Iteration 20 --
string\(1\) "."

--Iteration 21 --
string\(4\) "(\\|\/)foo"

--Iteration 22 --
string\(1\) "."

--Iteration 23 --
string\(4\) "(\\|\/)foo"

--Iteration 24 --
string\(3\) "foo"

--Iteration 25 --
string\(1\) "."

--Iteration 26 --
string\(1\) "(\\|\/)"

--Iteration 27 --
string\(1\) "(\\|\/)"

--Iteration 28 --
string\(1\) "."

--Iteration 29 --
string\(8\) "(\\|\/)foo\x00bar"
Done