The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
#
# Test stripping CFWS  [comments and folding white spaces] as
# specified by rfc2822.
#

use strict;
use warnings;

use lib qw(. .. tests);
use Tools;

use Test::More tests => 54;

use Mail::Message::Field::Fast;
use Mail::Address;

my @tests =
( 'aap noot mies'                              => 'aap noot mies'
, '  aap  noot mies '                          => 'aap noot mies'
, "aap\n noot\n"                               => 'aap noot'
, "aap (comment) noot"                         => 'aap noot'
, "aap () noot"                                => 'aap noot'
, "(a) aap (comment) noot (c)"                 => 'aap noot'
, "aap (com (nested) ment) noot"               => 'aap noot'
, "aap ((nested) comment) noot"                => 'aap noot'
, "aap (comment (nested)) noot"                => 'aap noot'
, "aap (comment(nested)) noot"                 => 'aap noot'
, "aap ((nested)comment(nested)) noot"         => 'aap noot'
, "((nested)comment(nested)) noot"             => 'noot'
, "aap ((nes(ted))comment(nested)) noot"       => 'aap noot'
, "(nes(ted)comment(nested)) noot (aap)"       => 'noot'
, "aap ((nes\n\nted)co\nmment(nested)\n) noot" => 'aap noot'
, '"aap" noot'                                 => '"aap" noot'
, '"aap" (noot) mies'                          => '"aap" mies'
, '"aap" (noot) mies '                         => '"aap" mies'
, '"aap" noot (mies) '                         => '"aap" noot'
, 'aap "noot" (mies) '                         => 'aap "noot"'
, 'aap (noot) "mies"'                          => 'aap "mies"'
, 'aap (noot) "mies" '                         => 'aap "mies"'
, 'aap (noot) "mies" (noot(nest)) aap'         => 'aap "mies" aap'
, 'aap \( noot'                                => 'aap \( noot'
, 'aap "(" noot'                               => 'aap "(" noot'
, 'aap "(noot)" mies'                          => 'aap "(noot)" mies'
, 'aap \"(noot) mies'                          => 'aap \" mies'
);

my @take = @tests;
while(@take)
{   my ($from, $to) = (shift @take, shift @take);
    is(Mail::Message::Field->stripCFWS($from), $to );
}

@take = @tests;
while(@take)
{   my ($from, $to) = (shift @take, shift @take);
    my $field = Mail::Message::Field::Fast->new('Something' => $from);
    is($field->stripCFWS, $to);
}