The Perl modules for automating tests seem to be built for testing other modules, not programs. I've been pondering what I should do to test the internals of programs beside external tests (running the program with various inputs and checking the outputs). What I'm looking for is a spot in the middle, where I can run some tests on my program to verify that various subroutines are functioning as expected.
I've done some experiments and the following example is the best idiom that I have been able to come up with so far. Am I on the right track? Am I using a hammer when I should be using a screwdriver? if so, who has the screwdrivers?
#!/usr/bin/perl
use warnings;
use strict;
use Getopt::Std;
our ($opt_t);
getopts('t');
if($opt_t){
eval 'use Test::Simple tests => 3;';
ok(double(2) == 4);
ok(double(-3) == -6);
ok(double(0) == 0);
exit;
}
print join ' ',map(double($_),@ARGV),"\n";
sub double{
my $a=shift;
$a*2;
}