The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'

######################### We start with some black magic to print on failure.
# Change 1..1 below to 1..last_test_to_print .
# (It may become useful if the test is moved to ./t subdirectory.)

BEGIN { $| = 1; print "1..6\n"; }
END {print "not ok 1\n" unless $loaded;}

#use diagnostics;
use Mail::SpamCannibal::WebService qw(
	load
	html_cat
	make_jsPOP_win
);

$loaded = 1;
print "ok 1\n";
######################### End of black magic.

# Insert your test code below (better if it prints "ok 13"
# (correspondingly "not ok 13") depending on the success of chunk 13
# of the test code):

$test = 2;

umask 027;
foreach my $dir (qw(tmp)) {
  if (-d $dir) {         # clean up previous test runs
    opendir(T,$dir);
    @_ = grep(!/^\./, readdir(T));
    closedir T;
    foreach(@_) {
      unlink "$dir/$_";
    }
    rmdir $dir or die "COULD NOT REMOVE $dir DIRECTORY\n";
  }
  unlink $dir if -e $dir;	# remove files of this name as well
}

sub ok {
  print "ok $test\n";
  ++$test;
}

mkdir './tmp',0755;

my $file = {
	test1	=> './tmp/test1.txt',
	test2	=> './tmp/test2.txt',
};

my $test1txt = q|test1 file
text is here
|;

my $test2txt = q|the quick brown fox jumped over the lazy dog
1234567890
|;

open(F,'>'. $file->{test1}) or die "could not open test file\n";
print F $test1txt;
close F;

## test 2	load file text
my $filetxt = load($file->{test1});
print "bad file text comparison\nnot "
	unless $filetxt eq $test1txt;
&ok;

## test 3	cat strings, load cache
my $string = 'sometext ';
my $htmltst = $string;
my %cache;

print "html_cat returned false\nnot "
	unless html_cat(\$htmltst,'test1',$file,\%cache);
&ok;

## test 4	check that results are defined
print "cache undefined\nnot "
	unless exists $cache{test1};
&ok;

## test 5	check that results are correct
print "cache value mismatch\nnot "
	unless $cache{test1} eq $test1txt;
&ok;

###########################
## test 6	check jsPOP javascript generator
my $expected = q|
<script language=javascript1.1>
var testname;
function popwin(color) {
  if (!color)
    color = '#ffffcc';
  testname = window.open ( "","testname",
"toolbar=no,menubar=no,location=no,scrollbars=yes,status=yes,resizable=yes," +
  "width=555,height=444");
  testname.document.open();
  testname.document.writeln('<html><body bgcolor="' + color + '"></body></html>');
  testname.document.close();
  testname.focus();
  return false;
}
</script>
|;
my $jshtml = make_jsPOP_win('testname',555,444);
print ":got: $jshtml\nexp: $expected\nnot "
	unless $jshtml eq $expected;
&ok;