The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 17;

use Config;

binmode(STDOUT, ":utf8");
binmode(STDERR, ":utf8");
binmode( Test::More->builder()->output(), ':encoding(utf-8)' );

# Perl < 5.10.0 did not handle Unicode at all...
my $wookie;

if ($Config{'PERL_REVISION'} == 5 &&
    $Config{'PERL_VERSION'} <= 8) {
	$wookie = 'wookie%D0.doc';
} else {
	$wookie = 'wookie%42D.doc';
}

BEGIN {
	use_ok('MIME::Parser::Filer');
}

# Tests for CPAN ticket 6789, and others
{
	my $filer = MIME::Parser::Filer->new();

	# All of these filenames should be considered evil
	my %evil = (
		' '               => '.dat' ,
		' leading_space'  => 'leading_space.dat',
		'trailing_space ' => 'trailing_space.dat',
		'.'               => '..dat',
		'..'              => '...dat',
		'index[1].html'   => 'index_1_.html',
		" wookie\x{f8}.doc" => "wookie%F8.doc",
		" wookie\x{042d}.doc" => $wookie,
	);

	foreach my $name (keys %evil) {
		ok( $filer->evil_filename( $name ), "$name is evil");
	}

	while( my ($evil, $clean) = each %evil ) {
		is( $filer->exorcise_filename( $evil), $clean, "$evil was exorcised");
	}

}