PHP Classes

File: test_smtp_prepare_data.php

Recommend this page to a friend!
  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: 9 years 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";

 
?>