# test.pl use strict; use warnings; my $testprog = shift or die "usage: $0 program-file\n"; my $datafile = 'tt.txt'; my $cmd = "perl $testprog <$datafile"; sub build_file { my $contents = shift; open(my $fh, '>', $datafile) or die "open '$datafile': $!"; print $fh "$contents\n"; close($fh); } print "Testing $testprog, size=", -s $testprog, " bytes.\n"; my @testdata = ( [ '00:00', <<'EXPECTED' ], x o o o o o o o o o o o EXPECTED [ '23:59', <<'EXPECTED' ], o x o o o o o o o o o o EXPECTED [ '21:35', <<'EXPECTED' ], o o o o o h o o o m o o EXPECTED [ '04:59', <<'EXPECTED' ], o m o o o o o o h o o o EXPECTED [ '12:00', <<'EXPECTED' ], x o o o o o o o o o o o EXPECTED [ '03:03', <<'EXPECTED' ], m o o o o o h o o o o o EXPECTED [ '21:08', <<'EXPECTED' ], o o m o o h o o o o o o EXPECTED [ '23:05', <<'EXPECTED' ], o h m o o o o o o o o o EXPECTED [ '16:24', <<'EXPECTED' ], o o o o o o o o x o o o EXPECTED [ '13:06', <<'EXPECTED' ], o o x o o o o o o o o o EXPECTED [ '18:00', <<'EXPECTED' ], m o o o o o o o o o o h EXPECTED [ '22:26', <<'EXPECTED' ], o o o h o o o o o o m o EXPECTED [ '20:10', <<'EXPECTED' ], o o o o m o o h o o o o EXPECTED ); for my $r (@testdata) { print $r->[0], "\n"; build_file($r->[0]); my $got = `$cmd`; chomp($got);chomp($got);chomp($got);$got.="\n"; $got eq $r->[1] or die "expected:\n$r->[1]got:\n$got"; } print "successful\n";