| #!/usr/bin/perl -w -T |
| |
| BEGIN { |
| if (-e 't/test_dir') { # if we are running "t/rule_tests.t", kluge around ... |
| chdir 't'; |
| } |
| |
| if (-e 'test_dir') { # running from test directory, not .. |
| unshift(@INC, '../blib/lib'); |
| } |
| } |
| |
| my $prefix = '.'; |
| if (-e 'test_dir') { # running from test directory, not .. |
| $prefix = '..'; |
| } |
| |
| use strict; |
| |
| use Mail::SpamAssassin; |
| use Digest::SHA qw(sha1_hex); |
| |
| use Test::More tests => 15; |
| |
| sub try { |
| my ($data, $want) = @_; |
| |
| if ($want ne sha1_hex($data)) { |
| print "Digest::SHA sha1 mismatch\n"; |
| return 0; |
| } |
| return 1; |
| } |
| |
| sub string { |
| my ($seed, $length) = @_; |
| |
| my $string; |
| while ($length--) { |
| $seed = (736 * $seed + 364) % 33843; |
| $string .= chr($seed % 256); |
| } |
| return $string; |
| } |
| |
| my $habeas = <<END; |
| X-Habeas-SWE-1: winter into spring |
| X-Habeas-SWE-2: brightly anticipated |
| X-Habeas-SWE-3: like Habeas SWE (tm) |
| X-Habeas-SWE-4: Copyright 2002 Habeas (tm) |
| X-Habeas-SWE-5: Sender Warranted Email (SWE) (tm). The sender of this |
| X-Habeas-SWE-6: email in exchange for a license for this Habeas |
| X-Habeas-SWE-7: warrant mark warrants that this is a Habeas Compliant |
| X-Habeas-SWE-8: Message (HCM) and not spam. Please report use of this |
| X-Habeas-SWE-9: mark in spam to <http://www.habeas.com/report/>. |
| END |
| |
| $habeas =~ tr/A-Z/a-z/; |
| $habeas =~ tr/ / /s; |
| $habeas =~ s/\/?>/\/>/; |
| |
| # fixed strings |
| ok(try("squeamish ossifrage\n", "820550664cf296792b38d1647a4d8c0e1966af57")); |
| ok(try("abc", "a9993e364706816aba3e25717850c26c9cd0d89d")); |
| ok(try("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", |
| "84983e441c3bd26ebaae4aa1f95129e5e54670f1")); |
| |
| # garbled strings |
| ok(try(string(287, 1), "909f99a779adb66a76fc53ab56c7dd1caf35d0fd")); |
| ok(try(string(648, 16), "44793ba2b430507c5be08165e5b003977e31d0b2")); |
| ok(try(string(628, 76), "5ed4ded95f3104734f438db4426ac2e2941b389f")); |
| ok(try(string(93, 348), "a4f33e402a7c689fb3899e5ff3608a4e4ff59347")); |
| ok(try(string(236, 2163), "bdbe8891a6b2fbb47ee419325877b513ee897fe0")); |
| ok(try(string(975, 687), "80c20a5fe4065d6877cdb75de27a4ce06d5cb8ed")); |
| ok(try(string(826, 4280), "fd4ed5f43e128f7a12346dd194e7f5bb77ae8d2f")); |
| ok(try(string(584, 24869), "69396239246666faed31d6f5884c7469d915d4d8")); |
| ok(try(string(367, 51474), "15201559b3ffb278918a2f7a35d2b702a72fb391")); |
| ok(try(string(504, 64273), "73e56c49eecef44a53048e27baa42e491375eb23")); |
| |
| # habeas |
| ok(try($habeas, "42ab3d716380503f66c4d44017c7f37b04458a9a")); |
| |
| # anti-habeas |
| $habeas =~ s/0/O/; |
| ok(!try($habeas, "42ab3d716380503f66c4d44017c7f37b04458a9a")); |