The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
# vim: filetype=perl :
use Test::More tests => 29;
use lib 't/lib';
use Test::MMS::Parser;

BEGIN {
   use_ok('MMS::Parser');
}

my $parser = MMS::Parser->create();

my %tests_for = (
   multipart_header => [
      ["\x00"                 => 0],
      ["\x01"                 => 1],
      ["\x10"                 => 16],
      ["\x7F"                 => 127],
      ["\xFF\x0F"             => 0x3F8F],
      ["\x82\x8F\x25"         => 0x87A5],
      ["\x8F\xFF\xFF\xFF\x7F" => 0xFF_FF_FF_FF],
   ],
   multipart_headers => [
      ["\x02\x01\x00" => {content_type => { text => '*/*', media_type => '*/*', parameters => {}},    other_headers => ''}],
      ["\x02\x01\x01" => {content_type => { text => 'text/*', media_type => 'text/*', parameters => {}}, other_headers => ''}],
      [
         "\x02\x01\x01blahblahblah" =>
           {content_type => { text => 'text/*', media_type => 'text/*', parameters => {}}, other_headers => 'blahblahblah'}
      ],
      [
         "\x02\x01\x3e" => {
            content_type  => {
               text => 'application/vnd.wap.mms-message',
               media_type => 'application/vnd.wap.mms-message',
               parameters => {},
            },
            other_headers => ''
         }
      ],
   ],
   multipart_entry => [
      [
         "\x07\x07\x02\x01\x00ciao1234567" => {
            headers => {
               content_type => {
                  text => '*/*',
                  media_type => '*/*',
                  parameters => {},
               },
               other_headers => 'ciao'
            },
            data    => '1234567'
         }
      ]
   ],
);
$tests_for{multipart_headers_len} = $tests_for{multipart_header};
$tests_for{multipart_data_len}    = $tests_for{multipart_header};

my ($in, @out);
for my $test (@{$tests_for{multipart_entry}}) {
   my ($input, $output) = @$test;
   next unless defined $output;
   $in .= $input;
   push @out, $output;
} ## end for my $test (@{$tests_for...
push @{$tests_for{multipart}}, [("\x00" . $in) => [@out]];
push @{$tests_for{multipart}}, [(pack("C*", scalar @out) . $in) => [@out]];

check_cases($parser, \%tests_for);