BEGIN { if ($ENV{PERL_CORE}){ chdir('t') if -d 't'; @INC = ('.', '../lib'); require Config; import Config; %Config=%Config if 0; # cease -w 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'; } else { require 'filter-util.pl'; } } use strict; use warnings; use vars qw($Inc $Perl); print "1..32\n" ; $Perl = "$Perl -w" ; use Cwd ; my $here = getcwd ; my $filename = "call.tst" ; my $filename2 = "call2.tst" ; my $filenamebin = "call.bin" ; my $module = "MyTest" ; my $module2 = "MyTest2" ; my $module3 = "MyTest3" ; my $module4 = "MyTest4" ; my $module5 = "MyTest5" ; my $module6 = "MyTest6" ; my $nested = "nested" ; my $block = "block" ; my $redir = $^O eq 'MacOS' ? "" : "2>&1"; # Test error cases ################## # no filter function in module ############################### writeFile("${module}.pm", <>8) != 0 or (($^O eq 'MSWin32' || $^O eq 'MacOS' || $^O eq 'NetWare' || $^O eq 'mpeix') && $? != 0))) ; ok(2, $a =~ /^Can't locate object method "filter" via package "MyTest"/) ; # no reference parameter in filter_add ###################################### writeFile("${module}.pm", <>8) != 0 or (($^O eq 'MSWin32' || $^O eq 'MacOS' || $^O eq 'NetWare' || $^O eq 'mpeix') && $? != 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, <>8) == 0) ; ok(6, $a eq < 0) { s/ABC/DEF/g } $status ; } 1 ; EOM writeFile($filename, <>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, <>8) == 0) ; ok(10, $a eq < 0) { foreach $pattern (@strings) { s/$pattern/PQR/g } } $status ; } ) } 1 ; EOM writeFile($filename, <>8) == 0) ; ok(12, $a eq < 0) { foreach $pattern (@$self) { s/$pattern/PQR/g } } $status ; } 1 ; EOM writeFile($filename, <>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, <>8) == 0) ; ok(16, $a eq <>8) == 0) ; ok(18, $a eq < 0) { s/DIR/$here/g } $status ; } 1 ; EOM writeFile($filename, <>8) == 0) ; ok(20, $a eq < 0 ; -- $$self ; filter_del() if $$self <= 0 ; $status ; } 1 ; EOM writeFile($filename, <>8) == 0) ; ok(22, $a eq < 0) { s/HERE/THERE/g } $status ; } 1 ; EOM writeFile($filenamebin, <>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 $redir` ; 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 $redir` ; ok(27, ($? >>8) == 0) ; ok(28, $a eq < #################### writeFile("${module6}.pm", <>8) == 0); chomp( $a ) if $^O eq 'VMS'; ok(30, $a eq 'ok'); $a = `$Perl "-I." $Inc $filename2`; ok(31, ($? >>8) == 0); chomp( $a ) if $^O eq 'VMS'; ok(32, $a eq 'ok'); } END { 1 while unlink $filename ; 1 while unlink $filename2 ; 1 while unlink $filenamebin ; 1 while unlink "${module}.pm" ; 1 while unlink "${module2}.pm" ; 1 while unlink "${module3}.pm" ; 1 while unlink "${module4}.pm" ; 1 while unlink "${module5}.pm" ; 1 while unlink "${module6}.pm" ; 1 while unlink $nested ; 1 while unlink "${block}.pm" ; }