--- /dev/null
+--TEST--
+Test function fstat() on directory wrapper
+--FILE--
+<?php
+$d = dirname(__FILE__);
+$h = opendir($d);
+var_dump(fstat($h));
+closedir($h);
+?>
+===DONE===
+--EXPECT--
+bool(false)
+===DONE===
\ No newline at end of file
--- /dev/null
+--TEST--
+Test function fstat() by calling it with its expected arguments
+--FILE--
+<?php
+$fp = fopen (__FILE__, 'r');
+var_dump(fstat( $fp ) );
+fclose($fp);
+?>
+===DONE===
+--EXPECTF--
+array(26) {
+ [0]=>
+ int(%i)
+ [1]=>
+ int(%i)
+ [2]=>
+ int(%i)
+ [3]=>
+ int(%i)
+ [4]=>
+ int(%i)
+ [5]=>
+ int(%i)
+ [6]=>
+ int(%i)
+ [7]=>
+ int(%i)
+ [8]=>
+ int(%i)
+ [9]=>
+ int(%i)
+ [10]=>
+ int(%i)
+ [11]=>
+ int(%i)
+ [12]=>
+ int(%i)
+ ["dev"]=>
+ int(%i)
+ ["ino"]=>
+ int(%i)
+ ["mode"]=>
+ int(%i)
+ ["nlink"]=>
+ int(%i)
+ ["uid"]=>
+ int(%i)
+ ["gid"]=>
+ int(%i)
+ ["rdev"]=>
+ int(%i)
+ ["size"]=>
+ int(%i)
+ ["atime"]=>
+ int(%i)
+ ["mtime"]=>
+ int(%i)
+ ["ctime"]=>
+ int(%i)
+ ["blksize"]=>
+ int(%i)
+ ["blocks"]=>
+ int(%i)
+}
+===DONE===
\ No newline at end of file
--- /dev/null
+--TEST--
+Test function fstat() by calling it more than or less than its expected arguments
+--FILE--
+<?php
+$fp = fopen (__FILE__, 'r');
+$extra_arg = 'nothing';
+
+var_dump(fstat( $fp, $extra_arg ) );
+var_dump(fstat());
+
+fclose($fp);
+
+?>
+===DONE===
+--EXPECTF--
+
+Warning: Wrong parameter count for fstat() in %s on line %d
+NULL
+
+Warning: Wrong parameter count for fstat() in %s on line %d
+NULL
+===DONE===
\ No newline at end of file
--- /dev/null
+--TEST--
+Test function fstat() by substituting agument 1 with array values.
+--FILE--
+<?php
+$index_array = array(1, 2, 3);
+$assoc_array = array(1 => 'one', 2 => 'two');
+
+$variation_array = array(
+ 'empty array' => array(),
+ 'int indexed array' => $index_array,
+ 'associative array' => $assoc_array,
+ 'nested arrays' => array('foo', $index_array, $assoc_array),
+ );
+
+
+foreach ( $variation_array as $var ) {
+ var_dump(fstat( $var ) );
+}
+?>
+===DONE===
+--EXPECTF--
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+===DONE===
\ No newline at end of file
--- /dev/null
+--TEST--
+Test function fstat() by substituting agument 1 with boolean values.
+--FILE--
+<?php
+$variation_array = array(
+ 'lowercase true' => true,
+ 'lowercase false' =>false,
+ 'uppercase TRUE' =>TRUE,
+ 'uppercase FALSE' =>FALSE,
+ );
+
+
+foreach ( $variation_array as $var ) {
+ var_dump(fstat( $var ) );
+}
+?>
+===DONE===
+--EXPECTF--
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+===DONE===
\ No newline at end of file
--- /dev/null
+--TEST--
+Test function fstat() by substituting agument 1 with emptyUnsetUndefNull values.
+--FILE--
+<?php
+$unset_var = 10;
+unset($unset_var);
+
+$variation_array = array(
+ 'unset var' => @$unset_var,
+ 'undefined var' => @$undefined_var,
+ 'empty string DQ' => "",
+ 'empty string SQ' => '',
+ 'uppercase NULL' => NULL,
+ 'lowercase null' => null,
+ );
+
+
+foreach ( $variation_array as $var ) {
+ var_dump(fstat( $var ) );
+}
+?>
+===DONE===
+--EXPECTF--
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+===DONE===
\ No newline at end of file
--- /dev/null
+--TEST--
+Test function fstat() by substituting agument 1 with float values.
+--FILE--
+<?php
+$variation_array = array(
+ 'float 10.5' => 10.5,
+ 'float -10.5' => -10.5,
+ 'float 12.3456789000e10' => 12.3456789000e10,
+ 'float -12.3456789000e10' => -12.3456789000e10,
+ 'float .5' => .5,
+ );
+
+
+foreach ( $variation_array as $var ) {
+ var_dump(fstat( $var ) );
+}
+?>
+===DONE===
+--EXPECTF--
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+===DONE===
\ No newline at end of file
--- /dev/null
+--TEST--
+Test function fstat() by substituting agument 1 with int values.
+--FILE--
+<?php
+$variation_array = array (
+ 'int 0' => 0,
+ 'int 1' => 1,
+ 'int 12345' => 12345,
+ 'int -12345' => -2345,
+ );
+
+
+foreach ( $variation_array as $var ) {
+ var_dump(fstat( $var ) );
+}
+?>
+===DONE===
+--EXPECTF--
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+===DONE===
\ No newline at end of file
--- /dev/null
+--TEST--
+Test function fstat() by substituting agument 1 with object values.
+--FILE--
+<?php
+
+
+
+
+function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) {
+ if (error_reporting() != 0) {
+ // report non-silenced errors
+ echo "Error: $err_no - $err_msg, $filename($linenum)\n";
+ }
+}
+set_error_handler('test_error_handler');
+
+
+
+class classWithToString
+{
+ public function __toString() {
+ return "Class A object";
+ }
+}
+
+class classWithoutToString
+{
+}
+
+$variation_array = array(
+ 'instance of classWithToString' => new classWithToString(),
+ 'instance of classWithoutToString' => new classWithoutToString(),
+ );
+
+
+foreach ( $variation_array as $var ) {
+ var_dump(fstat( $var ) );
+}
+?>
+===DONE===
+--EXPECTF--
+Error: 2 - fstat(): supplied argument is not a valid stream resource, %s(%d)
+bool(false)
+Error: 2 - fstat(): supplied argument is not a valid stream resource, %s(%d)
+bool(false)
+===DONE===
\ No newline at end of file
--- /dev/null
+--TEST--
+Test function fstat() by substituting agument 1 with string values.
+--FILE--
+<?php
+$heredoc = <<<EOT
+hello world
+EOT;
+
+$variation_array = array(
+ 'string DQ' => "string",
+ 'string SQ' => 'string',
+ 'mixed case string' => "sTrInG",
+ 'heredoc' => $heredoc,
+ );
+
+
+foreach ( $variation_array as $var ) {
+ var_dump(fstat( $var ) );
+}
+?>
+===DONE===
+--EXPECTF--
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+
+Warning: fstat(): supplied argument is not a valid stream resource in %s on line %d
+bool(false)
+===DONE===
\ No newline at end of file
--- /dev/null
+--TEST--
+Test function fstat() by calling it with its expected arguments
+--FILE--
+<?php
+$stat_result = stat(__FILE__);
+clearstatcache();
+$fp = fopen (__FILE__, 'r');
+$fstat_result = fstat($fp);
+fclose($fp);
+
+$isWin = (substr(PHP_OS, 0, 3) == 'WIN');
+$failed = false;
+foreach($stat_result as $key =>$value) {
+ if ($isWin && ($key === 0 || $key === 6 || $key === 'dev' || $key === 'rdev')) {
+ // windows, dev and rdev will not match this is expected
+ }
+ else {
+ if ($fstat_result[$key] != $value) {
+ echo "FAIL: stat differs at '$key'. $fstat_result[$key] -- $value\n";
+ $failed = true;
+ }
+ }
+}
+if ($failed !== true) {
+ echo "PASSED: all elements are the same\n";
+}
+
+
+?>
+===DONE===
+--EXPECT--
+PASSED: all elements are the same
+===DONE===
\ No newline at end of file