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..7\n"; }
END {print "not ok 1\n" unless $loaded;}

use Mail::SpamCannibal::ParseMessage qw(
	string2array
	array2string
);

$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;

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

my $msg = q|
once upon
a time
there were three little bears
more|;

## test 2 -- check for split
my @out;
my $count = string2array($msg,\@out);

print "bad line count\nnot "
	unless $count == 5;
&ok;

## test 3 -- check join, has extra endline added to msg below
my $result = array2string(\@out);
print "result does not match original\nnot "
	unless $result eq $msg ."\n";
&ok;

## test 4 -- test first line extraction;
my $expect = 'first line';
$out[0] = $expect;
$result = array2string(\@out,0,0);
print "got: $result exp: $expect\nnot "
	unless $result eq $expect."\n";
&ok;

## test 5 -- extract 2 lines in the middle
$expect = qq|once upon\na time\n|;
$result = array2string(\@out,1,2);
print "got: $result exp: $expect\nnot "
        unless $result eq $expect;
&ok;

## test 6 -- pluck last line
$expect = 'more';
$result = array2string(\@out,$#out,$#out);
print "got: $result exp: $expect\nnot "
        unless $result eq $expect."\n";
&ok;

## test 7 -- return empty string
$result = array2string(\@out,3,2);
print "expected empty string, got: $result\nnot "
        if $result;   
&ok;