

Task

Using a well-known testing-specific library/module/suite for your language, write some tests for your language's entry in Palindrome.

If your language does not have a testing specific library well known to the language's community then state this or omit the language.



# ptest.t
use strict;
use warnings;
 
use Test;
 
my %tests;
BEGIN {
    # plan tests before loading Palindrome.pm
    %tests = (
        'A man, a plan, a canal: Panama.'           => 1,
        'My dog has fleas'                          => 0,
        "Madam, I'm Adam."                          => 1,
        '1 on 1'                                    => 0,
        'In girum imus nocte et consumimur igni'    => 1,
        ''                                          => 1,
    );
 
    # plan 4 tests per string
    plan tests => (keys(%tests) * 4);
}
 
use Palindrome;
 
for my $key (keys %tests) {
    $_ = lc $key;  # convert to lowercase
    s/[\W_]//g;    # keep only alphanumeric characters
 
    my $expect = $tests{$key};
    my $note = ("\"$key\" should " . ($expect ? '' : 'not ') .
                "be a palindrome.");
 
    ok palindrome == $expect, 1, "palindrome: $note";
    ok palindrome_c == $expect, 1, "palindrome_c: $note";
    ok palindrome_r == $expect, 1, "palindrome_r: $note";
    ok palindrome_e == $expect, 1, "palindrome_e: $note";
}