<?xml version="1.0" encoding="windows-1252"?>
<node id="502691" title="Testing programs" created="2005-10-25 08:47:55" updated="2005-10-25 04:47:55">
<type id="115">
perlquestion</type>
<author id="5549">
lhoward</author>
<data>
<field name="doctext">
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.
&lt;p&gt;
&lt;readmore&gt;
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?
&lt;code&gt;
#!/usr/bin/perl

use warnings;
use strict;
use Getopt::Std;

our ($opt_t);
getopts('t');

if($opt_t){
   eval 'use Test::Simple tests =&gt; 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;
}
&lt;/code&gt;
&lt;/readmore&gt;</field>
</data>
</node>
