Algorithm-ToNumberMunger
view release on metacpan or search on metacpan
t/mungers-eps.t view on Meta::CPAN
my $dir = tempdir( CLEANUP => 1 );
my $parent = $$;
my @PIDS;
END {
if ( $$ == $parent ) {
for my $p (@PIDS) { kill 'TERM', $p; waitpid $p, 0 }
}
}
# Fractional sleep via 4-arg select, deliberately: Time::HiRes would be this
# test's only use of it and the dist nominally supports pre-5.8 perls.
sub nap {
select( undef, undef, undef, $_[0] ); ## no critic (ProhibitSleepViaSelect)
return;
}
# Fork an iqbi-damiq on $sock_path, wait until it answers PING; returns true
# on ready, false when fork/startup failed. The window is much longer than the
# test will ever run: count/rate assertions read marks made earlier, and a
# short window let them age out under scheduling delay (flaky failures).
sub start_daemon {
my ( $sock_path, %opts ) = @_;
my $pid = fork;
t/mungers.t view on Meta::CPAN
{
my $puny = $M->build( { munger => 'match', pattern => '^xn--' } );
is( $puny->('xn--e1afmkfd.ru'), 1, 'match bool: punycode label matches' );
is( $puny->('example.com'), 0, 'match bool: plain label does not' );
is( $puny->(undef), 0, 'match bool: undef is 0' );
my $esc = $M->build( { munger => 'match', pattern => '%[0-9A-Fa-f]{2}', mode => 'count' } );
is( $esc->('/a%20b%2e%2Ec'), 3, 'match count: percent-escapes' );
is( $esc->('/plain/path'), 0, 'match count: none' );
my $ci = $M->build( { munger => 'match', pattern => 'select', ignore_case => 1 } );
is( $ci->('SELECT * FROM'), 1, 'match ignore_case matches across case' );
eval { $M->build( { munger => 'match' } ) };
like( $@, qr/non-empty 'pattern'/, 'match requires a pattern' );
eval { $M->build( { munger => 'match', pattern => '(unclosed' } ) };
like( $@, qr/cannot compile pattern/, 'match croaks on a broken pattern at build time' );
eval { $M->build( { munger => 'match', pattern => 'x', mode => 'nope' } ) };
like( $@, qr/'mode' must be/, 'match rejects bad mode' );
}
( run in 0.848 second using v1.01-cache-2.11-cpan-600a1bdf6e4 )