| 
<?php
 /*
 * test.php
 *
 * @(#) $Id: test.php,v 1.11 2022/01/17 07:38:51 mlemos Exp $
 *
 */
 
 $message_file='sample/message.eml';
 $mbox_file='sample/mbox.eml';
 $noendbreak_message_file='sample/noendbreak.eml';
 $mixedlinebreaks_message_file='sample/mixedlinebreaks.eml';
 $missingheaderseparator_message_file = 'sample/missingheaderseparator.eml';
 $q_encoding_message_file = 'sample/q-encoding.eml';
 $long_header_message_file = 'sample/longheader.eml';
 $long_message_file = 'sample/longmessage.eml';
 $quoted_file_name_message_file = 'sample/quotedfilename.eml';
 $message_data=$noendbreak_message_data='';
 if(!($file=fopen($message_file, 'rb')))
 die($message_file.' file does not exist');
 while(!feof($file))
 $message_data.=fread($file,8000);
 fclose($file);
 if(!($file=fopen($noendbreak_message_file, 'rb')))
 die($noendbreak_message_file.' file does not exist');
 while(!feof($file))
 $noendbreak_message_data.=fread($file,8000);
 fclose($file);
 $__tests=array(
 'missingheaderseparator'=>array(
 'script'=>'../test_message_decoder.php',
 'generatedfile'=>'generated/missingheaderseparator.txt',
 'expectedfile'=>'expect/missingheaderseparator.txt',
 'options'=>array(
 'parameters'=>array(
 'File'=>$missingheaderseparator_message_file,
 ),
 'mbox'=>0
 )
 ),
 'mbox'=>array(
 'script'=>'../test_message_decoder.php',
 'generatedfile'=>'generated/mbox.txt',
 'expectedfile'=>'expect/mbox.txt',
 'options'=>array(
 'parameters'=>array(
 'File'=>$mbox_file,
 ),
 'mbox'=>1
 )
 ),
 'normal'=>array(
 'script'=>'../test_message_decoder.php',
 'generatedfile'=>'generated/normal.txt',
 'expectedfile'=>'expect/normal.txt',
 'options'=>array(
 'parameters'=>array(
 'File'=>$message_file,
 'SkipBody'=>1,
 )
 )
 ),
 'noendbreak'=>array(
 'script'=>'../test_message_decoder.php',
 'generatedfile'=>'generated/normal.txt',
 'expectedfile'=>'expect/normal.txt',
 'options'=>array(
 'parameters'=>array(
 'File'=>$noendbreak_message_file,
 'SkipBody'=>1,
 )
 )
 ),
 'nomboxnormal'=>array(
 'script'=>'../test_message_decoder.php',
 'generatedfile'=>'generated/normal.txt',
 'expectedfile'=>'expect/normal.txt',
 'options'=>array(
 'parameters'=>array(
 'File'=>$message_file,
 'SkipBody'=>1,
 ),
 'mbox'=>0
 )
 ),
 'nomboxnoendbreak'=>array(
 'script'=>'../test_message_decoder.php',
 'generatedfile'=>'generated/normal.txt',
 'expectedfile'=>'expect/normal.txt',
 'options'=>array(
 'parameters'=>array(
 'File'=>$noendbreak_message_file,
 'SkipBody'=>1,
 ),
 'mbox'=>0
 )
 ),
 'normalfromdata'=>array(
 'script'=>'../test_message_decoder.php',
 'generatedfile'=>'generated/normal.txt',
 'expectedfile'=>'expect/normal.txt',
 'options'=>array(
 'parameters'=>array(
 'Data'=>$message_data,
 'SkipBody'=>1,
 )
 )
 ),
 'noendbreakfromdata'=>array(
 'script'=>'../test_message_decoder.php',
 'generatedfile'=>'generated/normal.txt',
 'expectedfile'=>'expect/normal.txt',
 'options'=>array(
 'parameters'=>array(
 'Data'=>$noendbreak_message_data,
 'SkipBody'=>1,
 )
 )
 ),
 'mixedlinebreaks'=>array(
 'script'=>'../test_message_decoder.php',
 'generatedfile'=>'generated/mixedlinebreaks.txt',
 'expectedfile'=>'expect/mixedlinebreaks.txt',
 'options'=>array(
 'parameters'=>array(
 'File'=>$mixedlinebreaks_message_file,
 'SkipBody'=>1,
 )
 )
 ),
 'q-encoding'=>array(
 'script'=>'../test_message_decoder.php',
 'generatedfile'=>'generated/q-encoding.txt',
 'expectedfile'=>'expect/q-encoding.txt',
 'options'=>array(
 'parameters'=>array(
 'File'=>$q_encoding_message_file,
 'SkipBody'=>1,
 )
 )
 ),
 'parseaddresses'=>array(
 'script'=>'../test_parse_addresses.php',
 'generatedfile'=>'generated/parse_addresses.txt',
 'expectedfile'=>'expect/parse_addresses.txt',
 ),
 'longheader'=>array(
 'script'=>'../test_message_decoder.php',
 'generatedfile'=>'generated/longheader.txt',
 'expectedfile'=>'expect/longheader.txt',
 'options'=>array(
 'parameters'=>array(
 'File'=>$long_header_message_file,
 'SkipBody'=>1,
 )
 )
 ),
 'longmessage'=>array(
 'script'=>'../test_message_decoder.php',
 'generatedfile'=>'generated/longmessage.txt',
 'expectedfile'=>'expect/longmessage.txt',
 'options'=>array(
 'parameters'=>array(
 'File'=>$long_message_file,
 ),
 'message_buffer_length'=>8000
 )
 ),
 'quotedfilename'=>array(
 'script'=>'../test_message_decoder.php',
 'generatedfile'=>'generated/quotedfilename.txt',
 'expectedfile'=>'expect/quotedfilename.txt',
 'options'=>array(
 'parameters'=>array(
 'File'=>$quoted_file_name_message_file,
 ),
 'message_buffer_length'=>8000
 )
 ),
 );
 
 
 define('__TEST',1);
 if(IsSet($_SERVER['argv'])
 && GetType($_SERVER['argv']) == 'array'
 && Count($_SERVER['argv']) > 1)
 {
 $__few = array();
 for($__a = 1; $__a < count($_SERVER['argv']); ++$__a)
 {
 $__name = $_SERVER['argv'][$__a];
 if(!IsSet($__tests[$__name]))
 die($__name." is not a valid test name.\n");
 $__few[$__name] = $__tests[$__name];
 }
 $__tests = $__few;
 }
 for($__different=$__test=$__checked=0, Reset($__tests); $__test<count($__tests); Next($__tests), $__test++)
 {
 $__name=Key($__tests);
 $__script=$__tests[$__name]['script'];
 if(!file_exists($__script))
 {
 echo "\n".'Test script '.$__script.' does not exist.'."\n".str_repeat('_',80)."\n";
 continue;
 }
 echo 'Test "'.$__name.'": ... ';
 flush();
 if(IsSet($__tests[$__name]['options']))
 $__test_options=$__tests[$__name]['options'];
 else
 $__test_options=array();
 ob_start();
 require($__script);
 $output=ob_get_contents();
 ob_end_clean();
 $generated=$__tests[$__name]['generatedfile'];
 if(!($file = fopen($generated, 'wb')))
 die('Could not create the generated output file '.$generated."\n");
 if(!fputs($file, $output)
 || !fclose($file))
 die('Could not save the generated output to the file '.$generated."\n");
 $expected=$__tests[$__name]['expectedfile'];
 if(!file_exists($expected))
 {
 echo "\n".'Expected output file '.$expected.' does not exist.'."\n".str_repeat('_',80)."\n";
 continue;
 }
 $diff=array();
 exec('diff '.$expected.' '.$generated, $diff);
 if(count($diff))
 {
 echo "FAILED\n".'Output of script '.$__script.' is different from the expected file '.$expected." .\n".str_repeat('_',80)."\n";
 for($line=0; $line<count($diff); $line++)
 echo $diff[$line]."\n";
 echo str_repeat('_',80)."\n";
 flush();
 $__different++;
 }
 else
 echo "OK\n";
 $__checked++;
 }
 echo $__checked.' test '.($__checked==1 ? 'was' : 'were').' performed, '.($__checked!=$__test ? (($__test-$__checked==1) ? ' 1 test was skipped, ' : ($__test-$__checked).' tests were skipped, ') : '').($__different ? $__different.' failed' : 'none has failed').'.'."\n";
 
 ?>
 |