--TEST--
Test fread() function : error conditions
--FILE--
<?php
/*
 Prototype: string fread ( resource $handle [, int $length] );
 Description: reads up to length bytes from the file pointer referenced by handle. 
   Reading stops when up to length bytes have been read, EOF (end of file) is 
   reached, (for network streams) when a packet becomes available, or (after 
   opening userspace stream) when 8192 bytes have been read whichever comes first.
*/

echo "*** Testing error conditions ***\n";
$filename __FILE__
$file_handle fopen($filename"r");

// zero argument
echo "-- Testing fread() with zero argument --\n";
var_dumpfread() );

// more than expected no. of args
echo "-- Testing fread() with more than expected number of arguments --\n";
var_dumpfread($file_handle10$file_handle) );

// invalid length argument 
echo "-- Testing fread() with invalid length arguments --\n";
$len 0
var_dumpfread($file_handle$len) );
$len = -10;
var_dumpfread($file_handle$len) );

// test invalid arguments : non-resources
echo "-- Testing fread() with invalid arguments --\n";
$invalid_args = array (
  
"string",
  
10,
  
10.5,
  
true,
  array(
1,2,3),
  new 
stdclass,
);
/* loop to test fread() with different invalid type of args */
for($loop_counter 1$loop_counter <= count($invalid_args); $loop_counter++) {
  echo 
"-- Iteration $loop_counter --\n";
  
var_dumpfread($invalid_args[$loop_counter 1], 10) );
}

// fwrite() on a file handle which is already closed
echo "-- Testing fwrite() with closed/unset file handle --\n";
fclose($file_handle);
var_dumpfread($file_handle,$file_content_type) );

// fwrite on a file handle which is unset
$fp fopen($filename"r");
unset(
$fp); //unset file handle
var_dumpfread(@$fp,10) );
var_dumpfclose(@$fp) );

echo 
"Done\n";
--
EXPECTF--
*** 
Testing error conditions ***
-- 
Testing fread() with zero argument --

Warningfread() expects exactly 2 parameters0 given in %s on line %d
bool
(false)
-- 
Testing fread() with more than expected number of arguments --

Warningfread() expects exactly 2 parameters3 given in %s on line %d
bool
(false)
-- 
Testing fread() with invalid length arguments --

Warningfread(): Length parameter must be greater than 0 in %s on line %d
bool
(false)

Warningfread(): Length parameter must be greater than 0 in %s on line %d
bool
(false)
-- 
Testing fread() with invalid arguments --
-- 
Iteration 1 --

Warningfread() expects parameter 1 to be resourcestring given in %s on line %d
bool
(false)
-- 
Iteration 2 --

Warningfread() expects parameter 1 to be resourceinteger given in %s on line %d
bool
(false)
-- 
Iteration 3 --

Warningfread() expects parameter 1 to be resourcedouble given in %s on line %d
bool
(false)
-- 
Iteration 4 --

Warningfread() expects parameter 1 to be resourceboolean given in %s on line %d
bool
(false)
-- 
Iteration 5 --

Warningfread() expects parameter 1 to be resource, array given in %s on line %d
bool
(false)
-- 
Iteration 6 --

Warningfread() expects parameter 1 to be resourceobject given in %s on line %d
bool
(false)
-- 
Testing fwrite() with closed/unset file handle --

NoticeUndefined variablefile_content_type in %s on line %d

Warning
fread(): %d is not a valid stream resource in %s on line %d
bool
(false)

Warningfread() expects parameter 1 to be resourcenull given in %s on line %d
bool
(false)

Warningfclose() expects parameter 1 to be resourcenull given in %s on line %d
bool
(false)
Done