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