1use strict;
2use warnings;
3
4use Test::More tests => 1;
5
6use vars qw($bootfail);
7
8BEGIN {
9    eval {
10        require GD;
11    };
12    $bootfail = "no GD"
13        if $@;
14
15    unless ($bootfail) {
16        eval {
17            require GD::Text;
18        };
19        $bootfail = "no GD::Text"
20            if $@;
21    }
22
23    unless ($bootfail) {
24        eval {
25            require MIME::Base64;
26        };
27        $bootfail = "no MIME::Base64"
28            if $@;
29    }
30
31    SKIP:
32    {
33        skip($bootfail, 1) if $bootfail;
34    }
35
36    exit 1 if $bootfail;
37}
38
39use MIME::Base64 qw(encode_base64);
40
41use UML::Sequence::SimpleSeq;
42use UML::Sequence;
43use UML::Sequence::Raster;
44
45my $outline     = UML::Sequence::SimpleSeq->grab_outline_text('t/deluxewash.seq');
46my $methods     = UML::Sequence::SimpleSeq->grab_methods($outline);
47
48my $tree = UML::Sequence
49    ->new($methods, $outline, \&UML::Sequence::SimpleSeq::parse_signature,
50         \&UML::Sequence::SimpleSeq::grab_methods);
51
52# run the seq2rast.pl script against washcar.xml from the distribution
53
54UML::Sequence::Raster::seq2raster(
55    -a => 'yellow',
56    -c => '#E0E0E0',
57    -f => 'gd',
58    -o => 't/deluxewash.png',
59    't/deluxewash.xml')
60        or die "Couldn't run seq2rast.pl: $!\n";
61
62open(TESTRAST, 't/deluxewash.png');
63binmode TESTRAST;
64my $test_rast;
65read(TESTRAST, $test_rast, 16384);
66close TESTRAST;
67
68$test_rast = encode_base64($test_rast);
69my $correct_rast = join('', <DATA>);
70
71is_deeply($test_rast, $correct_rast, "PNG output");
72
73unlink 't/deluxewash.png';
74
75#
76#    need to base64 encode the PNG image, and put it here...
77#
78__DATA__
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
152