Пример #1
0
function all_tests($testset = 'tests.xml')
{
    $tests = new is_email_test($testset);
    $version = $tests->version();
    $description = $tests->description();
    $test_count = $tests->count();
    echo <<<PHP
\t<h3>Test package version {$version}</h3>
{$description}

PHP;
    $coverage_actual = array();
    // List of diagnoses returned by the test set
    $statistics_count = 0;
    $statistics_alert_category = 0;
    $statistics_alert_diagnosis = 0;
    $html = '';
    for ($i = 0; $i < $test_count; $i++) {
        $test = $tests->item($i);
        $id = $test->id;
        $address = $test->address;
        $category = $test->category;
        $diagnosis = $test->diagnosis;
        $email = $test->email;
        $address_html = $test->address_html;
        $comment = $test->comment;
        $result = $tests->test($email, $category, $diagnosis);
        // This is why we're here
        $category_result = $result['actual']['analysis'][ISEMAIL_META_CAT_VALUE];
        $diagnosis_result = $result['actual']['diagnosis'];
        $constant_category = $result['actual']['analysis'][ISEMAIL_META_CATEGORY];
        $constant_diagnosis = $result['actual']['analysis'][ISEMAIL_META_CONSTANT];
        $text = $result['actual']['analysis'][ISEMAIL_META_DESC];
        $references = array_key_exists(ISEMAIL_META_REF_ALT, $result['actual']['analysis']) ? '<span>' . $result['actual']['analysis'][ISEMAIL_META_REF_ALT] . '</span>' : '';
        $comments = array();
        if (strlen($comment) !== 0) {
            $comments[] = '<em>' . stripslashes($comment) . '</em>';
        }
        if ($text !== '') {
            $comments[] = stripslashes($text);
        }
        if ($result['actual']['alert_category']) {
            $class_category = ' unexpected';
            $rag_category = ' red';
            $comments[] = 'Expected category was ' . $result['expected']['analysis'][ISEMAIL_META_CATEGORY];
        } else {
            $class_category = '';
            $rag_category = '';
        }
        if ($result['actual']['alert_diagnosis']) {
            $class_diagnosis = ' unexpected';
            $rag_diagnosis = ' amber';
            $comments[] = 'Expected diagnosis was ' . $result['expected']['analysis'][ISEMAIL_META_CONSTANT];
        } else {
            $class_diagnosis = '';
            $rag_diagnosis = '';
        }
        // Validity
        $validity = $diagnosis_result < ISEMAIL_THRESHOLD;
        $valid = $validity ? 'valid' : 'invalid';
        $validity_rag = '';
        //		if ($validity === $result['actual']['simple']) $validity_rag = ' red';
        // Other diagnoses
        $alternates = alternate_diagnoses($result['actual']['parsedata']['status'], $diagnosis_result);
        if ($alternates !== '') {
            $comments[] = $alternates;
        }
        $comments_html = implode('<br/>', $comments);
        $address_length = strlen($address);
        $address_class = $address_length > 39 ? 'small' : ($address_length < 29 ? 'large' : 'medium');
        $html .= <<<HTML
\t\t\t<tr id="{$id}">
\t\t\t\t<td><p class="address {$address_class}">{$address_html}</p></td>
\t\t\t\t<td>
\t\t\t\t\t<div class="infoblock">
\t\t\t\t\t\t<div class="validity"><p class="{$valid} {$address_class}{$validity_rag}"/></div>
\t\t\t\t\t\t<div>
\t\t\t\t\t\t\t<div class="label">Test #</div>\t\t<div class="id">{$id}</div><br/>
\t\t\t\t\t\t\t<div class="label">Category</div>\t<div class="category{$class_category}{$rag_category}">{$constant_category}</div><br/>
\t\t\t\t\t\t\t<div class="label">Diagnosis</div>\t<div class="diagnosis{$class_diagnosis}{$rag_diagnosis}">{$constant_diagnosis}</div><br/>
{$references}
\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t</td>
\t\t\t\t<td><div class="comment">{$comments_html}</div></td>
\t\t\t</tr>

HTML;
        // Update statistics for this test
        $coverage_actual[] = $diagnosis_result;
        $statistics_count++;
        $statistics_alert_category += $result['actual']['alert_category'] ? 1 : 0;
        $statistics_alert_diagnosis += $result['actual']['alert_diagnosis'] ? 1 : 0;
    }
    // Revision 2.7: Added test run statistics
    if ($statistics_alert_category !== 0) {
        $statistics_class = 'red';
    } else {
        if ($statistics_alert_diagnosis !== 0) {
            $statistics_class = 'amber';
        } else {
            $statistics_class = 'green';
        }
    }
    $statistics_plural_count = $statistics_count === 1 ? '' : 's';
    $statistics_plural_category = $statistics_alert_category === 1 ? 'y' : 'ies';
    $statistics_plural_diagnosis = $statistics_alert_diagnosis === 1 ? 'is' : 'es';
    // Coverage
    $coverage_actual = array_unique($coverage_actual, SORT_NUMERIC);
    $coverage_theory = is_email_list(ISEMAIL_META_VALUE);
    $coverage_count_actual = count($coverage_actual);
    $coverage_count_theory = count($coverage_theory);
    $coverage_percent = sprintf('%d', 100 * $coverage_count_actual / $coverage_count_theory);
    $coverage_diff = array_diff($coverage_theory, $coverage_actual);
    $coverage_missing = '';
    $separator = '';
    foreach ($coverage_diff as $value) {
        $constant = is_email_analysis((int) $value, ISEMAIL_META_CONSTANT);
        $coverage_missing .= $separator . $constant;
        $separator = ', ';
    }
    if ($coverage_missing !== '') {
        $coverage_missing = " Missing outcomes: {$coverage_missing}";
    }
    echo <<<PHP
\t<p class="rubric">Coverage: {$coverage_percent}% ({$coverage_count_actual} outcomes recorded / {$coverage_count_theory} defined).{$coverage_missing}</p>
\t<p class="statistics {$statistics_class}">{$statistics_count} test{$statistics_plural_count}: {$statistics_alert_category} unexpected categor{$statistics_plural_category}, {$statistics_alert_diagnosis} unexpected diagnos{$statistics_plural_diagnosis}</p>
\t<table>
\t\t<thead>
\t\t\t<tr>
\t\t\t\t<th><p class="heading address">Address</p></th>
\t\t\t\t<th class="heading infoblock">Results</th>
\t\t\t\t<th class="heading comment">Comments</th>
\t\t\t</tr>
\t\t</thead>
\t\t<tbody>
{$html}\t\t</tbody>
\t</table>
\t<a id="bottom" href="#top">&laquo; back to top</a>
PHP;
}
Пример #2
0
<pre>
<?php 
// Demonstrates diagnostic testing of an email address
require_once '../is_email.php';
require_once '../test/meta.php';
$email = '*****@*****.**';
$result = is_email($email, true, true);
$analysis = is_email_analysis($result, ISEMAIL_META_ALL);
echo "Result is {$result}" . PHP_EOL;
echo 'Result description is ' . $analysis[ISEMAIL_META_DESC] . PHP_EOL;
echo 'PHP constant name is ' . $analysis[ISEMAIL_META_CONSTANT] . PHP_EOL;
echo 'SMTP enhanced status code is ' . $analysis[ISEMAIL_META_SMTP] . PHP_EOL;
?>
</pre>
Пример #3
0
 public static function test($email, $expected_category_test = '', $expected_diagnosis = '')
 {
     $result = array('actual' => array());
     $parsedata = array();
     $diagnosis_value = is_email($email, true, true, $parsedata);
     $result['actual']['diagnosis'] = $diagnosis_value;
     $result['actual']['parsedata'] = $parsedata;
     $result['actual']['analysis'] = is_email_analysis($diagnosis_value, ISEMAIL_META_ALL);
     if ($expected_diagnosis === '') {
         $result['actual']['alert_category'] = false;
         $result['actual']['alert_diagnosis'] = false;
     } else {
         $result['expected'] = array();
         $result['expected']['diagnosis'] = $expected_diagnosis;
         $result['expected']['analysis'] = is_email_analysis($expected_diagnosis, ISEMAIL_META_ALL);
         $category = $result['actual']['analysis'][ISEMAIL_META_CATEGORY];
         $expected_category = $result['expected']['analysis'][ISEMAIL_META_CATEGORY];
         $diagnosis = $result['actual']['analysis'][ISEMAIL_META_CONSTANT];
         $result['actual']['alert_category'] = $category !== $expected_category;
         $result['actual']['alert_diagnosis'] = $diagnosis !== $expected_diagnosis;
     }
     // Sanity check expected category
     // (this is necessary because we decided to keep both category
     // and diagnosis in the test data)
     if ($expected_category_test !== '' && $expected_category_test !== $expected_category) {
         die("The expected category {$expected_category_test} from the test data for '{$email}' does not match the true expected category {$expected_category}");
     }
     return $result;
 }
Пример #4
0
function validateEmail($emailToValidate)
{
    global $errors;
    require_once 'scripts/validate-email/is_email.php';
    require_once 'scripts/validate-email/meta.php';
    $emailresult = is_email($emailToValidate, true, true);
    $analysis = is_email_analysis($emailresult, ISEMAIL_META_ALL);
    if ($emailresult === ISEMAIL_VALID) {
        $errors['email'] = '';
    } else {
        if ($emailresult < ISEMAIL_THRESHOLD) {
            if ($_POST['didcheck'] != "true") {
                $errors['email'] = "Are you sure that's your email? Click submit again to confirm.";
                $errors['didCheck'] = true;
            }
        } else {
            $errors['email'] = "That's not a valid e-mail address.";
        }
    }
}