1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
use Test::More tests => 33;
use strict;
use HTTP::Proxy::BodyFilter::lines;
my $filter;
# error checking
eval { $filter = HTTP::Proxy::BodyFilter::lines->new( undef ) };
like( $@, qr/slurp mode is not supported/, "No slurp mode" );
eval { $filter = HTTP::Proxy::BodyFilter::lines->new( \'foo' ) };
like( $@, qr/"foo" is not numeric/, "Records must be numeric" );
eval { $filter = HTTP::Proxy::BodyFilter::lines->new( \0 ) };
like( $@, qr/Records of size 0/, "Records must be != 0" );
# test the filter
for (
HTTP::Proxy::BodyFilter::lines->new(),
[ "\n\n\nfoo\n", "", "\n\n\nfoo\n", "" ],
[ "foo\nbar", "", "foo\n", "bar" ],
[ "foo\nbar\nbaz", "", "foo\nbar\n", "baz" ],
[ "", "", "", "" ],
[ "foo\nbar\nbaz", undef, "foo\nbar\nbaz", undef ],
HTTP::Proxy::BodyFilter::lines->new('%'),
[ "\n\n%\nfoo\n", "", "\n\n%", "\nfoo\n" ],
[ "foo\%bar", "", 'foo%', "bar" ],
[ "foo\n\%bar\nbaz", "", "foo\n\%", "bar\nbaz" ],
[ "foo\nbar\%baz", undef, "foo\nbar\%baz", undef ],
HTTP::Proxy::BodyFilter::lines->new(""),
[ "foo\nbar\n\nbaz", "", "foo\nbar\n\n", "baz" ],
[ "foo\nbar\n\n", "", "", "foo\nbar\n\n" ],
[ "foo\nbar\n\n", undef, "foo\nbar\n\n", undef ],
HTTP::Proxy::BodyFilter::lines->new( \10 ),
[ '01234567890123', "", "0123456789", "0123" ],
[ '0123456789' x 2, "", "0123456789" x 2, "" ],
[ '01234567890123', undef, "01234567890123", undef ],
)
{
$filter = $_, next if ref eq 'HTTP::Proxy::BodyFilter::lines';
my ( $data, $buffer ) = @$_[ 0, 1 ];
$filter->filter( \$data, undef, undef,
( defined $buffer ? \$buffer : undef ) );
is( $data, $_->[2], "Correct data" );
is( $buffer, $_->[3], "Correct buffer" );
}
|