#!/usr/bin/perl
#
# regression - regression test script for bydate.
#
$help = shift(@ARGV);

if ($help eq "-?")
{
	print("Syntax:   regression\n");
	print("Function: Run bydate regression tests\n");
	print("Options:  -d   run bydate.exe in place of bydate\n");
	exit(1);
}



$bydate = "bydate";
if ($help eq "-d")
{
	$bydate = "bydate.exe";
}

sub run_test
{
	$no = shift(@_);
	$infile = shift(@_);
	$outfile = shift(@_);
	$pattern = shift(@_);
	$fail = shift(@_);
	@debug = @_;
	if (length($pattern) > 0)
	{
		$parg="-p='$pattern'";
	}

	print("Test $no [$pattern]: $infile -> $outfile\n");
	unlink($outfile);
	open(FH, ">$infile");
	close(FH);
	system("$bydate -t $debug $parg $infile");
	if ("$fail" ne "FAIL")
	{
		$e = 0;
		if (-f "$infile")
		{
			print("Test $no [$pattern]: $infile was not renamed\n");
			$e = 1; 
		}

		if (-f "$outfile")
		{
			$ok++; 
		}
		else
		{
			print("Test $no [$pattern]: $outfile not found\n"); 
			$e = 1;; 
		}

		$err += $e;
        }
	else
        {
		if (-f "$infile")
		{
			$ok++;
		} 
		else
		{
			print("Test $no [$pattern]: $infile not found\n"); 
			$err++;
		}		
	}

	unlink(($infile,$outfile));
	$tests++; 
}

$tests = 0;
$ok = 0;
$err = 0;

do run_test(1, "x.txt",       "20090604.txt"                               );
do run_test(2, "x.txt",       "20.txt",                "c"                 );
do run_test(3, "x.txt",       "090604.txt",            "ymd"               );
do run_test(4, "x.txt",       "101530.txt",            "HMS"               );
do run_test(5, "x.txt",       "20090604101530.txt",    "cymdHMS"           );
do run_test(6, "filename.txt","filename20090604.txt",  "pcymd"             );
do run_test(7, "filename.txt","file20090604.txt",      "p4cymd"            );
do run_test(8, "filename.txt","filename.txt",          "p9cymd",    "FAIL" );
do run_test(9, "filename.txt","filename.txt",          "scymd",     "FAIL" );
do run_test(10,"filename.txt","name20090604.txt",      "s4cymd"            );
do run_test(11,"filename.txt","filename.txt",          "s9cymd",    "FAIL" );
do run_test(12,"filename.txt","filename.txt",          "fcymd",     "FAIL" );
do run_test(13,"filename.txt","filename.txt",          "f()cymd",   "FAIL" );
do run_test(14,"filename.txt","filename.txt",          "f(,)cymd",  "FAIL" );
do run_test(15,"filename.txt","filename.txt",          "f(0,4)cymd","FAIL" );
do run_test(16,"filename.txt","file20090604.txt",      "f(1,4)cymd"        );
do run_test(17,"filename.txt","ilen20090604.txt",      "f(2,4)cymd"        );
do run_test(18,"filename.txt","enam20090604.txt",      "f(4,4)cymd"        ); 
do run_test(19,"filename.txt","name20090604.txt",      "f(5,4)cymd"        );
do run_test(20,"filename.txt","filename.txt",          "f(6,4)cymd","FAIL" );
do run_test(21,"filename.txt","20090604.txt",          "t()cymd"           ); 
do run_test(22,"filename.txt","PREFIX20090604.txt",    "t(PREFIX)cymd"     ); 
do run_test(23,"filename.txt","DATED090604-101530.txt","t(DATED)ymdt(-)HMS"); 
do run_test(24,"filename.txt","20090604.",             "cymde()"           );
do run_test(25,"filename.txt","20090604.TXT",          "cymde(TXT)"        );
do run_test(26,"filename.txt","20090604.longtext",     "cymde(longtext)"   );
do run_test(27,"filename.txt","20090604.txt",          "cymd"              );
do run_test(28,"filename.txt","filename.html",         "pe(html)"          );
do run_test(29,"filename.txt","f_090604.txt",          "p1t(_)ymd"         );
do run_test(30,"forecast.gif","forecast20090604.gif",  "pcymd"             );
do run_test(31,"visual.gif",  "090604-101530.gif",     "ymdt(-)HMS"        );

if ($help eq "-d")
{
	mkdir("saved",0777);
	do run_test(32,"saved\\mcg.eml", 
        	       "saved\\e-mail_mcg-20090604.html",
        	       "t(e-mail_)pt(-)cymde(html)");
	unlink("saved\\e-mail_mcg-20090604.html");
	rmdir("saved");
}
else
{
	mkdir("saved_mail",0777);
	do run_test(32,"saved_mail/mcg.eml", 
        	       "saved_mail/e-mail_mcg-20090604.html",
        	       "t(e-mail_)pt(-)cymde(html)");
	unlink("saved_mail/e-mail_mcg-20090604.html");
	rmdir("saved_mail");
}

do run_test(33,"pre-12pm.jpg", 
               "20090604_12-forecast.jpg",
               "cymdt(_)f(5,2)t(-forecast)");

print("-----------------\n");
print("Tests run: $tests\n");
print("Successes: $ok\n");
print("Failures:  $err\n"); 
print("-----------------\n");
if ($help eq "-d")
{
	print("Answers should be 33, 17, 16 for a DOS run\n");
	print("******* Delete left-over files! **********\n"); 
}
