BEGIN { chdir('t') if -d 't'; @INC = '.'; push @INC, '../lib'; require Config; import Config; if ($Config{'extensions'} !~ m{\bFilter/Util/Call\b}) { print "1..0 # Skip: Filter::Util::Call was not built\n"; exit 0; } require 'lib/filter-util.pl'; } use strict; use warnings; use vars qw($Inc $Perl); print "1..28\n" ; $Perl = "$Perl -w" ; use Cwd ; my $here = getcwd ; my $filename = "call.tst" ; my $filenamebin = "call.bin" ; my $module = "MyTest" ; my $module2 = "MyTest2" ; my $module3 = "MyTest3" ; my $module4 = "MyTest4" ; my $module5 = "MyTest5" ; my $nested = "nested" ; my $block = "block" ; # Test error cases ################## # no filter function in module ############################### writeFile("${module}.pm", <&1` ; ok(1, (($? >>8) != 0 or ($^O eq 'MSWin32' && $? != 0))) ; ok(2, $a =~ /^Can't locate object method "filter" via package "MyTest"/) ; # no reference parameter in filter_add ###################################### writeFile("${module}.pm", <&1` ; ok(3, (($? >>8) != 0 or ($^O eq 'MSWin32' && $? != 0))) ; #ok(4, $a =~ /^usage: filter_add\(ref\) at ${module}.pm/) ; ok(4, $a =~ /^Not enough arguments for Filter::Util::Call::filter_add/) ; # non-error cases ################# # a simple filter, using a closure ################# writeFile("${module}.pm", < 0) { s/ABC/DEF/g } $status ; } ) ; } 1 ; EOM writeFile($filename, <&1` ; ok(5, ($? >>8) == 0) ; ok(6, $a eq < 0) { s/ABC/DEF/g } $status ; } 1 ; EOM writeFile($filename, <&1` ; ok(7, ($? >>8) == 0) ; ok(8, $a eq < 0) { s/XYZ/PQR/g } $status ; } 1 ; EOM writeFile("${module3}.pm", < 0) { s/Fred/Joe/g } $status ; } ) ; } 1 ; EOM writeFile("${module4}.pm", < 0) { s/Today/Tomorrow/g } $status ; } 1 ; EOM writeFile($filename, <&1` ; ok(9, ($? >>8) == 0) ; ok(10, $a eq < 0) { foreach $pattern (@strings) { s/$pattern/PQR/g } } $status ; } ) } 1 ; EOM writeFile($filename, <&1` ; ok(11, ($? >>8) == 0) ; ok(12, $a eq < 0) { foreach $pattern (@$self) { s/$pattern/PQR/g } } $status ; } 1 ; EOM writeFile($filename, <&1` ; ok(13, ($? >>8) == 0) ; ok(14, $a eq < 0) { chop ; s/\r$//; # and now the second line (it will append) $status = filter_read() ; } $status ; } 1 ; EOM writeFile($filename, <&1` ; ok(15, ($? >>8) == 0) ; ok(16, $a eq <&1` ; ok(17, ($? >>8) == 0) ; ok(18, $a eq < 0) { s/DIR/$here/g } $status ; } 1 ; EOM writeFile($filename, <&1` ; ok(19, ($? >>8) == 0) ; ok(20, $a eq < 0 ; -- $$self ; filter_del() if $$self <= 0 ; $status ; } 1 ; EOM writeFile($filename, <&1` ; ok(21, ($? >>8) == 0) ; ok(22, $a eq < 0) { s/HERE/THERE/g } $status ; } 1 ; EOM writeFile($filenamebin, <&1` ; ok(23, ($? >>8) == 0) ; ok(24, $a eq < 0) { s/HERE/THERE/g } $status ; } 1 ; EOM writeFile($filename, <; print @a; __DATA__ HERE I am I'm HERE HERE today gone tomorrow EOM $a = `$Perl "-I." $Inc $filename 2>&1` ; ok(25, ($? >>8) == 0) ; ok(26, $a eq < 0) { s/HERE/THERE/g } $status ; } 1 ; EOM writeFile($filename, <; print @a; __END__ HERE I am I'm HERE HERE today gone tomorrow EOM $a = `$Perl "-I." $Inc $filename 2>&1` ; ok(27, ($? >>8) == 0) ; ok(28, $a eq <