--TEST--
Test fgetc() function : basic functionality
--FILE--
<?php
/*
 Prototype: string fgetc ( resource $handle );
 Description: Gets character from file pointer
*/
// include the header for common test function 
include ("file.inc");

echo "*** Testing fgetc() : basic operations ***\n";
/* read charecter from different files which are opened in different modes */
$file_modes = array( "r", "rb", "rt", "r+", "r+b", "r+t");

/* create file with following type of contents */
$file_content_types = array("numeric", "text", "text_with_new_line");

for($outerloop_counter = 0; $outerloop_counter < count($file_content_types); $outerloop_counter++) {
  echo "--- Outerloop iteration ";
  echo $outerloop_counter + 1;
  echo " ---\n";
  // create file file 
  create_files(dirname(__FILE__), 1, $file_content_types[$outerloop_counter], 0755, 1, "w", "fgetc_basic", 1);
 
  //open the file in different modes and check the working of fgetc
  for($innerloop_counter = 0; $innerloop_counter < count($file_modes); $innerloop_counter++) {
    echo "-- Innerloop iteration ";
    echo $innerloop_counter + 1;
    echo " of Outerloop Iteration ";
    echo $outerloop_counter + 1;
    echo " --\n";
     
    // open the file using the $file_modes
    $filename = dirname(__FILE__)."/fgetc_basic1.tmp"; // file name that is created by create_files
    echo "-- Testing fgetc() : file opened using $file_modes[$innerloop_counter] mode --\n";
    $file_handle = fopen($filename, $file_modes[$innerloop_counter]);
    if ( !$file_handle ) {
      echo "Error: failed to open file $filename!";
      exit();
    }

    // perform the read file at least 6 char and check 
    for( $counter = 1; $counter <= 6; $counter++ ) {
      // read data from the file and check, file pointer position, feof etc
      var_dump( fgetc($file_handle) ); // read a char
      var_dump( ftell($file_handle) ); // file pointer position
      var_dump( feof($file_handle) );  // is it eof()
      var_dump($file_handle); // dump the $file_handle to see if any thing got modifed 
    } // end of for
    
    // close the file 
    fclose ( $file_handle);

  } // end of innerloop for
  
  // delete the file
  delete_files(dirname(__FILE__), 1, "fgetc_basic", 1, ".tmp");

} // end of outerloop for

echo "Done\n";
?>
--EXPECTF--
*** Testing fgetc() : basic operations ***
--- Outerloop iteration 1 ---
-- Innerloop iteration 1 of Outerloop Iteration 1 --
-- Testing fgetc() : file opened using r mode --
string(1) "2"
int(1)
bool(false)
resource(8) of type (stream)
string(1) "2"
int(2)
bool(false)
resource(8) of type (stream)
string(1) "2"
int(3)
bool(false)
resource(8) of type (stream)
string(1) "2"
int(4)
bool(false)
resource(8) of type (stream)
string(1) "2"
int(5)
bool(false)
resource(8) of type (stream)
string(1) "2"
int(6)
bool(false)
resource(8) of type (stream)
-- Innerloop iteration 2 of Outerloop Iteration 1 --
-- Testing fgetc() : file opened using rb mode --
string(1) "2"
int(1)
bool(false)
resource(9) of type (stream)
string(1) "2"
int(2)
bool(false)
resource(9) of type (stream)
string(1) "2"
int(3)
bool(false)
resource(9) of type (stream)
string(1) "2"
int(4)
bool(false)
resource(9) of type (stream)
string(1) "2"
int(5)
bool(false)
resource(9) of type (stream)
string(1) "2"
int(6)
bool(false)
resource(9) of type (stream)
-- Innerloop iteration 3 of Outerloop Iteration 1 --
-- Testing fgetc() : file opened using rt mode --
string(1) "2"
int(1)
bool(false)
resource(10) of type (stream)
string(1) "2"
int(2)
bool(false)
resource(10) of type (stream)
string(1) "2"
int(3)
bool(false)
resource(10) of type (stream)
string(1) "2"
int(4)
bool(false)
resource(10) of type (stream)
string(1) "2"
int(5)
bool(false)
resource(10) of type (stream)
string(1) "2"
int(6)
bool(false)
resource(10) of type (stream)
-- Innerloop iteration 4 of Outerloop Iteration 1 --
-- Testing fgetc() : file opened using r+ mode --
string(1) "2"
int(1)
bool(false)
resource(11) of type (stream)
string(1) "2"
int(2)
bool(false)
resource(11) of type (stream)
string(1) "2"
int(3)
bool(false)
resource(11) of type (stream)
string(1) "2"
int(4)
bool(false)
resource(11) of type (stream)
string(1) "2"
int(5)
bool(false)
resource(11) of type (stream)
string(1) "2"
int(6)
bool(false)
resource(11) of type (stream)
-- Innerloop iteration 5 of Outerloop Iteration 1 --
-- Testing fgetc() : file opened using r+b mode --
string(1) "2"
int(1)
bool(false)
resource(12) of type (stream)
string(1) "2"
int(2)
bool(false)
resource(12) of type (stream)
string(1) "2"
int(3)
bool(false)
resource(12) of type (stream)
string(1) "2"
int(4)
bool(false)
resource(12) of type (stream)
string(1) "2"
int(5)
bool(false)
resource(12) of type (stream)
string(1) "2"
int(6)
bool(false)
resource(12) of type (stream)
-- Innerloop iteration 6 of Outerloop Iteration 1 --
-- Testing fgetc() : file opened using r+t mode --
string(1) "2"
int(1)
bool(false)
resource(13) of type (stream)
string(1) "2"
int(2)
bool(false)
resource(13) of type (stream)
string(1) "2"
int(3)
bool(false)
resource(13) of type (stream)
string(1) "2"
int(4)
bool(false)
resource(13) of type (stream)
string(1) "2"
int(5)
bool(false)
resource(13) of type (stream)
string(1) "2"
int(6)
bool(false)
resource(13) of type (stream)
--- Outerloop iteration 2 ---
-- Innerloop iteration 1 of Outerloop Iteration 2 --
-- Testing fgetc() : file opened using r mode --
string(1) "t"
int(1)
bool(false)
resource(16) of type (stream)
string(1) "e"
int(2)
bool(false)
resource(16) of type (stream)
string(1) "x"
int(3)
bool(false)
resource(16) of type (stream)
string(1) "t"
int(4)
bool(false)
resource(16) of type (stream)
string(1) " "
int(5)
bool(false)
resource(16) of type (stream)
string(1) "t"
int(6)
bool(false)
resource(16) of type (stream)
-- Innerloop iteration 2 of Outerloop Iteration 2 --
-- Testing fgetc() : file opened using rb mode --
string(1) "t"
int(1)
bool(false)
resource(17) of type (stream)
string(1) "e"
int(2)
bool(false)
resource(17) of type (stream)
string(1) "x"
int(3)
bool(false)
resource(17) of type (stream)
string(1) "t"
int(4)
bool(false)
resource(17) of type (stream)
string(1) " "
int(5)
bool(false)
resource(17) of type (stream)
string(1) "t"
int(6)
bool(false)
resource(17) of type (stream)
-- Innerloop iteration 3 of Outerloop Iteration 2 --
-- Testing fgetc() : file opened using rt mode --
string(1) "t"
int(1)
bool(false)
resource(18) of type (stream)
string(1) "e"
int(2)
bool(false)
resource(18) of type (stream)
string(1) "x"
int(3)
bool(false)
resource(18) of type (stream)
string(1) "t"
int(4)
bool(false)
resource(18) of type (stream)
string(1) " "
int(5)
bool(false)
resource(18) of type (stream)
string(1) "t"
int(6)
bool(false)
resource(18) of type (stream)
-- Innerloop iteration 4 of Outerloop Iteration 2 --
-- Testing fgetc() : file opened using r+ mode --
string(1) "t"
int(1)
bool(false)
resource(19) of type (stream)
string(1) "e"
int(2)
bool(false)
resource(19) of type (stream)
string(1) "x"
int(3)
bool(false)
resource(19) of type (stream)
string(1) "t"
int(4)
bool(false)
resource(19) of type (stream)
string(1) " "
int(5)
bool(false)
resource(19) of type (stream)
string(1) "t"
int(6)
bool(false)
resource(19) of type (stream)
-- Innerloop iteration 5 of Outerloop Iteration 2 --
-- Testing fgetc() : file opened using r+b mode --
string(1) "t"
int(1)
bool(false)
resource(20) of type (stream)
string(1) "e"
int(2)
bool(false)
resource(20) of type (stream)
string(1) "x"
int(3)
bool(false)
resource(20) of type (stream)
string(1) "t"
int(4)
bool(false)
resource(20) of type (stream)
string(1) " "
int(5)
bool(false)
resource(20) of type (stream)
string(1) "t"
int(6)
bool(false)
resource(20) of type (stream)
-- Innerloop iteration 6 of Outerloop Iteration 2 --
-- Testing fgetc() : file opened using r+t mode --
string(1) "t"
int(1)
bool(false)
resource(21) of type (stream)
string(1) "e"
int(2)
bool(false)
resource(21) of type (stream)
string(1) "x"
int(3)
bool(false)
resource(21) of type (stream)
string(1) "t"
int(4)
bool(false)
resource(21) of type (stream)
string(1) " "
int(5)
bool(false)
resource(21) of type (stream)
string(1) "t"
int(6)
bool(false)
resource(21) of type (stream)
--- Outerloop iteration 3 ---
-- Innerloop iteration 1 of Outerloop Iteration 3 --
-- Testing fgetc() : file opened using r mode --
string(1) "l"
int(1)
bool(false)
resource(24) of type (stream)
string(1) "i"
int(2)
bool(false)
resource(24) of type (stream)
string(1) "n"
int(3)
bool(false)
resource(24) of type (stream)
string(1) "e"
int(4)
bool(false)
resource(24) of type (stream)
string(1) "
"
int(5)
bool(false)
resource(24) of type (stream)
string(1) "l"
int(6)
bool(false)
resource(24) of type (stream)
-- Innerloop iteration 2 of Outerloop Iteration 3 --
-- Testing fgetc() : file opened using rb mode --
string(1) "l"
int(1)
bool(false)
resource(25) of type (stream)
string(1) "i"
int(2)
bool(false)
resource(25) of type (stream)
string(1) "n"
int(3)
bool(false)
resource(25) of type (stream)
string(1) "e"
int(4)
bool(false)
resource(25) of type (stream)
string(1) "
"
int(5)
bool(false)
resource(25) of type (stream)
string(1) "l"
int(6)
bool(false)
resource(25) of type (stream)
-- Innerloop iteration 3 of Outerloop Iteration 3 --
-- Testing fgetc() : file opened using rt mode --
string(1) "l"
int(1)
bool(false)
resource(26) of type (stream)
string(1) "i"
int(2)
bool(false)
resource(26) of type (stream)
string(1) "n"
int(3)
bool(false)
resource(26) of type (stream)
string(1) "e"
int(4)
bool(false)
resource(26) of type (stream)
string(1) "
"
int(5)
bool(false)
resource(26) of type (stream)
string(1) "l"
int(6)
bool(false)
resource(26) of type (stream)
-- Innerloop iteration 4 of Outerloop Iteration 3 --
-- Testing fgetc() : file opened using r+ mode --
string(1) "l"
int(1)
bool(false)
resource(27) of type (stream)
string(1) "i"
int(2)
bool(false)
resource(27) of type (stream)
string(1) "n"
int(3)
bool(false)
resource(27) of type (stream)
string(1) "e"
int(4)
bool(false)
resource(27) of type (stream)
string(1) "
"
int(5)
bool(false)
resource(27) of type (stream)
string(1) "l"
int(6)
bool(false)
resource(27) of type (stream)
-- Innerloop iteration 5 of Outerloop Iteration 3 --
-- Testing fgetc() : file opened using r+b mode --
string(1) "l"
int(1)
bool(false)
resource(28) of type (stream)
string(1) "i"
int(2)
bool(false)
resource(28) of type (stream)
string(1) "n"
int(3)
bool(false)
resource(28) of type (stream)
string(1) "e"
int(4)
bool(false)
resource(28) of type (stream)
string(1) "
"
int(5)
bool(false)
resource(28) of type (stream)
string(1) "l"
int(6)
bool(false)
resource(28) of type (stream)
-- Innerloop iteration 6 of Outerloop Iteration 3 --
-- Testing fgetc() : file opened using r+t mode --
string(1) "l"
int(1)
bool(false)
resource(29) of type (stream)
string(1) "i"
int(2)
bool(false)
resource(29) of type (stream)
string(1) "n"
int(3)
bool(false)
resource(29) of type (stream)
string(1) "e"
int(4)
bool(false)
resource(29) of type (stream)
string(1) "
"
int(5)
bool(false)
resource(29) of type (stream)
string(1) "l"
int(6)
bool(false)
resource(29) of type (stream)
Done