ACME-THEDANIEL-Utils

 view release on metacpan or  search on metacpan

lib/ACME/THEDANIEL/Utils.pm  view on Meta::CPAN

=head1 SYNOPSIS

Used to complete the Intermediate Perl textbook

=head1 SUBROUTINES/METHODS

=head2 sum

=cut

sub sum {
  my $sum;
  foreach my $num ( @_ ) {
    if ( !looks_like_number( $num ) ) {
      croak "Invalid input: $num"
    }

    $sum += $num;
  }
  return $sum;
}

t/sum.t  view on Meta::CPAN

use Test::Exception;
use ACME::THEDANIEL::Utils;

BEGIN {
    use_ok( 'ACME::THEDANIEL::Utils' ) || print "Bail out!\n";
}

is( ACME::THEDANIEL::Utils::sum( 1, 2, 3, 4 ), 10, "multiple numbers sum" );
is( ACME::THEDANIEL::Utils::sum( 1 ), 1, "single number sum" );

throws_ok( sub { ACME::THEDANIEL::Utils::sum( 1, 2, "Three" ) }, qr/Invalid input: Three/, "One bad arg out of many");
throws_ok( sub { ACME::THEDANIEL::Utils::sum( "Three" ) }, qr/Invalid input: Three/, "invalid single input");

is( ACME::THEDANIEL::Utils::sum(), undef, "empty input" );

xt/boilerplate.t  view on Meta::CPAN

#!perl -T
use 5.006;
use strict;
use warnings;
use Test::More;

plan tests => 3;

sub not_in_file_ok {
    my ($filename, %regex) = @_;
    open( my $fh, '<', $filename )
        or die "couldn't open $filename for reading: $!";

    my %violated;

    while (my $line = <$fh>) {
        while (my ($desc, $regex) = each %regex) {
            if ($line =~ $regex) {
                push @{$violated{$desc}||=[]}, $.;

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 1.113 second using v1.00-cache-2.02-grep-82fe00e-cpan-c30982ac1bc3 )