# $Id: 20-mx.t,v 1.2 2003/11/18 08:27:29 ctriv Exp $ use strict; use Regexp::Common qw/dns/; use Test::More tests => 27; test_good_mxes($RE{'dns'}{'data'}{'mx'}, { data => '10 mail.example.com', exchange => 'mail.example.com', pref => '10' }, { data => '1000 mail', exchange => 'mail', pref => '1000' }, ); my $overflow = 2**16; test_bad_mxes($RE{'dns'}{'data'}{'mx'}, '', '1234567', 'mail.example.com', '1 0 mail.example.com', "$overflow mail.example.com", '256 rfc_2181/hostname.com', ); # test the the flags all work test_good_mxes($RE{'dns'}{'data'}{'mx'}{-minlables => 2}, { data => '10 mail.example.com', exchange => 'mail.example.com', pref => '10' }, ); test_bad_mxes($RE{'dns'}{'data'}{'mx'}{-minlables => 2}, '10 com', ); test_good_mxes($RE{'dns'}{'data'}{'mx'}{-rfc => 2181}, { data => '10 rfc_2181/hostname.com', exchange => 'rfc_2181/hostname.com', pref => '10' }, ); sub test_good_mxes { my ($re, @good) = @_; my $keep = $re->{'-keep'}; for (@good) { like($_->{'data'}, "/^$re\$/", "$_->{'data'} matches"); ok($_->{'data'} =~ m/^$keep$/, "$_->{'data'} matches with keep"); is($1, $_->{'data'}, '$1 is data'); is($2, $_->{'pref'}, '$2 is pref'); is($3, $_->{'exchange'}, '$3 is exchange'); } } sub test_bad_mxes { my ($re, @bad) = @_; unlike($_, "/^$re\$/", "$_ does not match") for @bad; }