Login   Register  
PHP Classes
elePHPant
Icontem

File: test_smtp_prepare_data.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Manuel Lemos  >  SMTP E-mail sending class  >  test_smtp_prepare_data.php  >  Download  
File: test_smtp_prepare_data.php
Role: Unit test script
Content type: text/plain
Description: Test suite script to verify whether the function to prepare message body data is working correctly
Class: SMTP E-mail sending class
Sends e-mail messages via SMTP protocol
Author: By
Last change: Initial revision.
Date: 27 days ago
Size: 2,535 bytes
 

Contents

Class file image Download
<?php
/*
 * test_smtp_prepare_data.php
 *
 * @(#) $Header: /opt2/ena/metal/smtp/test_smtp_prepare_data.php,v 1.1 2003/08/26 07:39:59 mlemos Exp $
 *
 */


    
require("smtp.php");

Function 
ReferencePrepareData($data)
{
     
$length=strlen($data);
    for(
$output="",$position=0;$position<$length;)
    {
        
$next_position=$length;
        for(
$current=$position;$current<$length;$current++)
        {
            switch(
$data[$current])
            {
                case 
"\n":
                    
$next_position=$current+1;
                    break 
2;
                case 
"\r":
                    
$next_position=$current+1;
                    if(
$next_position<$length
                    
&& $data[$next_position]=="\n")
                        
$next_position++;
                    break 
2;
            }
        }
        if(
$data[$position]==".")
            
$output.=".";
        
$output.=substr($data,$position,$current-$position);
        if(
$current<$length)
            
$output.="\r\n";
        
$position=$next_position;
    }
    return(
$output);
}


    
$smtp=new smtp_class;
    
$test_data=array(
        
"Empty    "=>"",
        
"Dot      "=>".",
        
"CR       "=>"\r",
        
"LF       "=>"\n",
        
"Double LF"=>"\n\n",
        
"Double CR"=>"\r\r",
        
"Triple LF"=>"\n\n\n",
        
"Triple CR"=>"\r\r\r",
        
"Four LF  "=>"\n\n\n\n",
        
"Four CR  "=>"\r\r\r\r",
        
"Complex  "=>"\n1\n\n2\r3\n4\n\r5\r\n.\n."
    
);
    
Reset($test_data);
    
$end=(GetType($test=Key($test_data))!="string");
    for(
$passed=$failed=0,$failed_tests="";!$end;)
    {
        echo 
"Testing ",$test," ...";
        
flush();
        
$reference_prepared_data=ReferencePrepareData($test_data[$test]);
        
$smtp->PrepareData($test_data[$test],$preg_prepared_data,1);
        
$smtp->PrepareData($test_data[$test],$ereg_prepared_data,0);
        
$preg_ok=!strcmp($reference_prepared_data,$preg_prepared_data);
        
$ereg_ok=!strcmp($reference_prepared_data,$ereg_prepared_data);
        if(
$preg_ok && $ereg_ok)
        {
            echo 
" OK";
            
$passed++;
        }
        else
        {
            if(
$failed)
                
$failed_tests.=", ";
            
$failed_tests.=trim($test);
            
$failed++;
            echo 
" FAILED!\n";
            echo 
"Test data \"",str_replace("\r","\\r",str_replace("\n","\\n\n",$test_data[$test])),"\"\n";
            echo 
"Reference prepared data \"",str_replace("\r","\\r",str_replace("\n","\\n\n",$reference_prepared_data)),"\"\n";
            if(!
$preg_ok)
                echo 
"preg prepared data \"",str_replace("\r","\\r",str_replace("\n","\\n\n",$preg_prepared_data)),"\"\n";
            if(!
$ereg_ok)
                echo 
"ereg prepared data \"",str_replace("\r","\\r",str_replace("\n","\\n\n",$ereg_prepared_data)),"\"\n";
        }
        echo 
"\n";

        
Next($test_data);
        
$end=(GetType($test=Key($test_data))!="string");
    }
    if(
$failed==0)
        echo 
"All ",$passed," tests passed!\n";
    else
        echo 
"Passed ",$passed," tests, failed ",$failed,": ",$failed_tests,"!\n";

 
?>