The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
# vim:ft=perl
use strict;
use warnings;

use Test::More 'no_plan';
use Email::MIME::Encodings;

use_ok("Email::MIME");

open IN, "t/Mail/mail-1" or die $!;

my $string = do { local $/; <IN> };

my $email = Email::MIME->new($string);
isa_ok($email, "Email::MIME");

my ($part) = $email->parts;
isa_ok($part, "Email::MIME");

my $body = $part->body;

is(
  $body,
  Email::MIME::Encodings::decode(base64 => $email->body_raw),
  "Internally consistent"
);

open(GIF, "t/Mail/att-1.gif") or die $!;
binmode GIF;
my $gif = do { local $/; <GIF> };
is($body, $gif, "Externally consistent");
is($email->filename, "1.gif", "Filename is correct");

my $header  = $email->header('X-MultiHeader');
my @headers = $email->header('X-MultiHeader');

ok $header, 'got back a header in scalar context';
ok !ref($header), 'header in scalar context is not ref';

is scalar(@headers), 3, 'got all three back in list context';

# This test would be stupider if it hadn't broken in a release.
# There are to many reliances on Email::Simple guts, at this point.
#   -- rjbs, 2006-10-15
eval { $email->as_string };
is($@, '', "we can stringify without dying");