3 require Config; import Config;
4 %Config=%Config if 0; # cease -w
5 if ($Config{'extensions'} !~ m{\bFilter/Util/Call\b}) {
6 print "1..0 # Skip: Filter::Util::Call was not built\n";
10 require 'filter-util.pl';
16 use vars qw($Inc $Perl);
26 my $filename = "call.tst" ;
27 my $filename2 = "call2.tst" ;
28 my $filenamebin = "call.bin" ;
29 my $module = "MyTest" ;
30 my $module2 = "MyTest2" ;
31 my $module3 = "MyTest3" ;
32 my $module4 = "MyTest4" ;
33 my $module5 = "MyTest5" ;
34 my $module6 = "MyTest6" ;
35 my $nested = "nested" ;
37 my $redir = $^O eq 'MacOS' ? "" : "2>&1";
42 # no filter function in module
43 ###############################
45 writeFile("${module}.pm", <<EOM) ;
48 use Filter::Util::Call ;
50 sub import { filter_add(bless []) }
55 my $a = `$Perl "-I." $Inc -e "use ${module} ;" $redir` ;
56 ok(1, (($? >>8) != 0 or (($^O eq 'MSWin32' || $^O eq 'MacOS' || $^O eq 'NetWare' || $^O eq 'mpeix') && $? != 0))) ;
57 ok(2, $a =~ /^Can't locate object method "filter" via package "MyTest"/) ;
59 # no reference parameter in filter_add
60 ######################################
62 writeFile("${module}.pm", <<EOM) ;
65 use Filter::Util::Call ;
67 sub import { filter_add() }
72 $a = `$Perl "-I." $Inc -e "use ${module} ;" $redir` ;
73 ok(3, (($? >>8) != 0 or (($^O eq 'MSWin32' || $^O eq 'MacOS' || $^O eq 'NetWare' || $^O eq 'mpeix') && $? != 0))) ;
74 #ok(4, $a =~ /^usage: filter_add\(ref\) at ${module}.pm/) ;
75 ok(4, $a =~ /^Not enough arguments for Filter::Util::Call::filter_add/) ;
84 # a simple filter, using a closure
87 writeFile("${module}.pm", <<EOM, <<'EOM') ;
91 use Filter::Util::Call ;
98 if (($status = filter_read()) > 0) {
108 writeFile($filename, <<EOM, <<'EOM') ;
115 print "I am $here\n" ;
116 print "some letters ABC\n" ;
119 Alphabetti Spagetti ($y)
124 $a = `$Perl "-I." $Inc $filename $redir` ;
125 ok(5, ($? >>8) == 0) ;
129 Alphabetti Spagetti (DEFDEF)
132 # a simple filter, not using a closure
135 writeFile("${module}.pm", <<EOM, <<'EOM') ;
139 use Filter::Util::Call ;
140 sub import { filter_add(bless []) }
147 if (($status = filter_read()) > 0) {
157 writeFile($filename, <<EOM, <<'EOM') ;
164 print "I am $here\n" ;
165 print "some letters ABC\n" ;
168 Alphabetti Spagetti ($y)
173 $a = `$Perl "-I." $Inc $filename $redir` ;
174 ok(7, ($? >>8) == 0) ;
178 Alphabetti Spagetti (DEFDEF)
186 writeFile("${module2}.pm", <<EOM, <<'EOM') ;
188 use Filter::Util::Call ;
191 sub import { filter_add(bless []) }
198 if (($status = filter_read()) > 0) {
207 writeFile("${module3}.pm", <<EOM, <<'EOM') ;
209 use Filter::Util::Call ;
212 sub import { filter_add(
218 if (($status = filter_read()) > 0) {
228 writeFile("${module4}.pm", <<EOM) ;
233 print "I'm feeling used!\n" ;
234 print "Fred Joe ABC DEF PQR XYZ\n" ;
235 print "See you Today\n" ;
239 writeFile("${module5}.pm", <<EOM, <<'EOM') ;
241 use Filter::Util::Call ;
244 sub import { filter_add(bless []) }
251 if (($status = filter_read()) > 0) {
260 writeFile($filename, <<EOM, <<'EOM') ;
262 # two filters for this file
269 print "some letters ABCXYZ\n" ;
272 Fred likes Alphabetti Spagetti ($y)
277 writeFile($nested, <<EOM, <<'EOM') ;
281 print "This is another file XYZ\n" ;
288 $a = `$Perl "-I." $Inc $filename $redir` ;
289 ok(9, ($? >>8) == 0) ;
290 ok(10, $a eq <<EOM) ;
292 Fred Joe ABC DEF PQR XYZ
294 This is another file XYZ
297 Fred likes Alphabetti Spagetti (DEFDEFPQR)
300 # using the module context (with a closure)
301 ###########################################
304 writeFile("${module2}.pm", <<EOM, <<'EOM') ;
306 use Filter::Util::Call ;
322 if (($status = filter_read()) > 0) {
323 foreach $pattern (@strings)
336 writeFile($filename, <<EOM, <<'EOM') ;
338 use $module2 qw( XYZ KLM) ;
339 use $module2 qw( ABC NMO) ;
342 print "some letters ABCXYZ KLM NMO\n" ;
343 $y = "ABCDEFXYZKLMNMO" ;
345 Alphabetti Spagetti ($y)
350 $a = `$Perl "-I." $Inc $filename $redir` ;
351 ok(11, ($? >>8) == 0) ;
352 ok(12, $a eq <<EOM) ;
353 some letters PQRPQR PQR PQR
354 Alphabetti Spagetti (PQRDEFPQRPQRPQR)
359 # using the module context (without a closure)
360 ##############################################
363 writeFile("${module2}.pm", <<EOM, <<'EOM') ;
365 use Filter::Util::Call ;
374 filter_add (bless [@strings])
383 if (($status = filter_read()) > 0) {
384 foreach $pattern (@$self)
395 writeFile($filename, <<EOM, <<'EOM') ;
397 use $module2 qw( XYZ KLM) ;
398 use $module2 qw( ABC NMO) ;
401 print "some letters ABCXYZ KLM NMO\n" ;
402 $y = "ABCDEFXYZKLMNMO" ;
404 Alphabetti Spagetti ($y)
409 $a = `$Perl "-I." $Inc $filename $redir` ;
410 ok(13, ($? >>8) == 0) ;
411 ok(14, $a eq <<EOM) ;
412 some letters PQRPQR PQR PQR
413 Alphabetti Spagetti (PQRDEFPQRPQRPQR)
420 writeFile("${module2}.pm", <<EOM, <<'EOM') ;
422 use Filter::Util::Call ;
440 if (($status = filter_read()) > 0) {
443 # and now the second line (it will append)
444 $status = filter_read() ;
454 writeFile($filename, <<EOM, <<'EOM') ;
469 $a = `$Perl "-I." $Inc $filename $redir` ;
470 ok(15, ($? >>8) == 0) ;
471 ok(16, $a eq <<EOM) ;
479 writeFile("${block}.pm", <<EOM, <<'EOM') ;
481 use Filter::Util::Call ;
490 filter_add (bless [@strings] )
505 my $string = <<'EOM' ;
506 print "hello mum\n" ;
508 print "Who wants it?\n$x\n" ;
512 writeFile($filename, <<EOM, $string ) ;
516 $a = `$Perl "-I." $Inc $filename $redir` ;
517 ok(17, ($? >>8) == 0) ;
518 ok(18, $a eq <<EOM) ;
527 writeFile("${block}.pm", <<EOM, <<'EOM') ;
529 use Filter::Util::Call ;
540 filter_add(bless [@strings] )
547 my ($here) = quotemeta getcwd ;
549 if (($status = filter_read()) > 0) {
558 writeFile($filename, <<EOM, <<'EOM') ;
561 print "We are in DIR\n" ;
564 $a = `$Perl "-I." $Inc $filename $redir` ;
565 ok(19, ($? >>8) == 0) ;
566 ok(20, $a eq <<EOM) ;
574 writeFile("${block}.pm", <<EOM, <<'EOM') ;
576 use Filter::Util::Call ;
586 filter_add(bless \$count )
595 if ($status = filter_read()) > 0 ;
598 filter_del() if $$self <= 0 ;
606 writeFile($filename, <<EOM, <<'EOM') ;
612 HERE today gone tomorrow\n" ;
615 $a = `$Perl "-I." $Inc $filename $redir` ;
616 ok(21, ($? >>8) == 0) ;
617 ok(22, $a eq <<EOM) ;
621 HERE today gone tomorrow
628 writeFile("${block}.pm", <<EOM, <<'EOM') ;
630 use Filter::Util::Call ;
638 filter_add(bless [] )
646 if (($status = filter_read_exact(9)) > 0) {
656 writeFile($filenamebin, <<EOM, <<'EOM') ;
662 HERE today gone tomorrow\n" ;
665 $a = `$Perl "-I." $Inc $filenamebin $redir` ;
666 ok(23, ($? >>8) == 0) ;
667 ok(24, $a eq <<EOM) ;
671 THERE today gone tomorrow
679 writeFile("${block}.pm", <<EOM, <<'EOM') ;
681 use Filter::Util::Call ;
689 filter_add(bless [] )
697 if (($status = filter_read()) > 0) {
707 writeFile($filename, <<EOM, <<'EOM') ;
716 HERE today gone tomorrow
719 $a = `$Perl "-I." $Inc $filename $redir` ;
720 ok(25, ($? >>8) == 0) ;
721 ok(26, $a eq <<EOM) ;
725 HERE today gone tomorrow
735 writeFile("${block}.pm", <<EOM, <<'EOM') ;
737 use Filter::Util::Call ;
745 filter_add(bless [] )
753 if (($status = filter_read()) > 0) {
763 writeFile($filename, <<EOM, <<'EOM') ;
772 HERE today gone tomorrow
775 $a = `$Perl "-I." $Inc $filename $redir` ;
776 ok(27, ($? >>8) == 0) ;
777 ok(28, $a eq <<EOM) ;
781 HERE today gone tomorrow
789 # see Message-ID: <2002110621.427.A15377@ttul.org>
792 writeFile("${module6}.pm", <<EOM);
796 use Filter::Util::Call;
797 sub import { filter_add(sub{}) }
798 sub unimport { filter_del() }
802 writeFile($filename2, <<EOM);
807 my $str = $^O eq 'MacOS' ? "'ok'" : "q{ok}";
808 my $a = `$Perl "-I." $Inc -e "no ${module6}; print $str"`;
809 ok(29, ($? >>8) == 0);
810 chomp( $a ) if $^O eq 'VMS';
813 $a = `$Perl "-I." $Inc $filename2`;
814 ok(31, ($? >>8) == 0);
815 chomp( $a ) if $^O eq 'VMS';
821 1 while unlink $filename ;
822 1 while unlink $filename2 ;
823 1 while unlink $filenamebin ;
824 1 while unlink "${module}.pm" ;
825 1 while unlink "${module2}.pm" ;
826 1 while unlink "${module3}.pm" ;
827 1 while unlink "${module4}.pm" ;
828 1 while unlink "${module5}.pm" ;
829 1 while unlink "${module6}.pm" ;
830 1 while unlink $nested ;
831 1 while unlink "${block}.pm" ;