<?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";
?>
|