The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More tests => 22;

use_ok 'Email::MIME';
use_ok 'Email::MIME::Modifier';

my $email = Email::MIME->new(<<__MESSAGE__);
Content-Disposition: inline

Engine Engine number nine.
__MESSAGE__

isa_ok $email, 'Email::MIME';

is scalar($email->parts), 1, 'only one part';

$email->parts_set([ Email::MIME->new(<<__MESSAGE__), Email::MIME->new(<<__MESSAGE2__) ]);
Content-Type: text/plain

Part one, part one!
__MESSAGE__
Content-Transfer-Encoding: base64

UGFydCB0d28sIHBhcnQgdHdvIQo=
__MESSAGE2__


is scalar($email->parts), 2, 'two parts';
is +($email->parts)[1]->body, qq[Part two, part two!\n], 'part two decoded';

$email->parts_add([ $email->parts ]);

is scalar($email->parts), 4, 'four parts';
is +($email->parts)[1]->body, qq[Part two, part two!\n], 'part two decoded again';
is +($email->parts)[3]->body, qq[Part two, part two!\n], 'part four decoded';

$email->walk_parts(sub {
    my $part = shift;
    isa_ok $part, 'Email::MIME';
    
    $part->encoding_set('base64') if $part->parts <= 1;
    $part->body_set( "foo\nbar" ) if $part->parts <= 1;
});

$email->walk_parts(sub {
    my $part = shift;
    if ( $part->parts <= 1 ) {
        is $part->header('Content-Transfer-Encoding'), 'base64', 'walkdown encoding worked';
        is $part->body, "foo\nbar", 'walkdown body_set worked';
    }
});