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