5 require Config; import Config;
6 if ($Config{'extensions'} !~ m{\bFilter/Util/Call\b}) {
7 print "1..0 # Skip: Filter::Util::Call was not built\n";
10 require 'lib/filter-util.pl';
20 use vars qw($Inc $Perl);
22 $filename = "call.tst" ;
23 $filenamebin = "call.bin" ;
25 $module2 = "MyTest2" ;
26 $module3 = "MyTest3" ;
27 $module4 = "MyTest4" ;
28 $module5 = "MyTest5" ;
35 # no filter function in module
36 ###############################
38 writeFile("${module}.pm", <<EOM) ;
41 use Filter::Util::Call ;
43 sub import { filter_add(bless []) }
48 $a = `$Perl -I. $Inc -e "use ${module} ;" 2>&1` ;
49 ok(1, (($? >>8) != 0 or ($^O eq 'MSWin32' && $? != 0))) ;
50 ok(2, $a =~ /^Can't locate object method "filter" via package "MyTest"/) ;
52 # no reference parameter in filter_add
53 ######################################
55 writeFile("${module}.pm", <<EOM) ;
58 use Filter::Util::Call ;
60 sub import { filter_add() }
65 $a = `$Perl -I. $Inc -e "use ${module} ;" 2>&1` ;
66 ok(3, (($? >>8) != 0 or ($^O eq 'MSWin32' && $? != 0))) ;
67 #ok(4, $a =~ /^usage: filter_add\(ref\) at ${module}.pm/) ;
68 ok(4, $a =~ /^Not enough arguments for Filter::Util::Call::filter_add/) ;
77 # a simple filter, using a closure
80 writeFile("${module}.pm", <<EOM, <<'EOM') ;
84 use Filter::Util::Call ;
91 if (($status = filter_read()) > 0) {
101 writeFile($filename, <<EOM, <<'EOM') ;
108 print "I am $here\n" ;
109 print "some letters ABC\n" ;
112 Alphabetti Spagetti ($y)
117 $a = `$Perl -I. $Inc $filename 2>&1` ;
118 ok(5, ($? >>8) == 0) ;
122 Alphabetti Spagetti (DEFDEF)
125 # a simple filter, not using a closure
128 writeFile("${module}.pm", <<EOM, <<'EOM') ;
132 use Filter::Util::Call ;
133 sub import { filter_add(bless []) }
140 if (($status = filter_read()) > 0) {
150 writeFile($filename, <<EOM, <<'EOM') ;
157 print "I am $here\n" ;
158 print "some letters ABC\n" ;
161 Alphabetti Spagetti ($y)
166 $a = `$Perl -I. $Inc $filename 2>&1` ;
167 ok(7, ($? >>8) == 0) ;
171 Alphabetti Spagetti (DEFDEF)
179 writeFile("${module2}.pm", <<EOM, <<'EOM') ;
181 use Filter::Util::Call ;
184 sub import { filter_add(bless []) }
191 if (($status = filter_read()) > 0) {
200 writeFile("${module3}.pm", <<EOM, <<'EOM') ;
202 use Filter::Util::Call ;
205 sub import { filter_add(
211 if (($status = filter_read()) > 0) {
221 writeFile("${module4}.pm", <<EOM) ;
226 print "I'm feeling used!\n" ;
227 print "Fred Joe ABC DEF PQR XYZ\n" ;
228 print "See you Today\n" ;
232 writeFile("${module5}.pm", <<EOM, <<'EOM') ;
234 use Filter::Util::Call ;
237 sub import { filter_add(bless []) }
244 if (($status = filter_read()) > 0) {
253 writeFile($filename, <<EOM, <<'EOM') ;
255 # two filters for this file
262 print "some letters ABCXYZ\n" ;
265 Fred likes Alphabetti Spagetti ($y)
270 writeFile($nested, <<EOM, <<'EOM') ;
274 print "This is another file XYZ\n" ;
281 $a = `$Perl -I. $Inc $filename 2>&1` ;
282 ok(9, ($? >>8) == 0) ;
283 ok(10, $a eq <<EOM) ;
285 Fred Joe ABC DEF PQR XYZ
287 This is another file XYZ
290 Fred likes Alphabetti Spagetti (DEFDEFPQR)
293 # using the module context (with a closure)
294 ###########################################
297 writeFile("${module2}.pm", <<EOM, <<'EOM') ;
299 use Filter::Util::Call ;
315 if (($status = filter_read()) > 0) {
316 foreach $pattern (@strings)
329 writeFile($filename, <<EOM, <<'EOM') ;
331 use $module2 qw( XYZ KLM) ;
332 use $module2 qw( ABC NMO) ;
335 print "some letters ABCXYZ KLM NMO\n" ;
336 $y = "ABCDEFXYZKLMNMO" ;
338 Alphabetti Spagetti ($y)
343 $a = `$Perl -I. $Inc $filename 2>&1` ;
344 ok(11, ($? >>8) == 0) ;
345 ok(12, $a eq <<EOM) ;
346 some letters PQRPQR PQR PQR
347 Alphabetti Spagetti (PQRDEFPQRPQRPQR)
352 # using the module context (without a closure)
353 ##############################################
356 writeFile("${module2}.pm", <<EOM, <<'EOM') ;
358 use Filter::Util::Call ;
367 filter_add (bless [@strings])
376 if (($status = filter_read()) > 0) {
377 foreach $pattern (@$self)
388 writeFile($filename, <<EOM, <<'EOM') ;
390 use $module2 qw( XYZ KLM) ;
391 use $module2 qw( ABC NMO) ;
394 print "some letters ABCXYZ KLM NMO\n" ;
395 $y = "ABCDEFXYZKLMNMO" ;
397 Alphabetti Spagetti ($y)
402 $a = `$Perl -I. $Inc $filename 2>&1` ;
403 ok(13, ($? >>8) == 0) ;
404 ok(14, $a eq <<EOM) ;
405 some letters PQRPQR PQR PQR
406 Alphabetti Spagetti (PQRDEFPQRPQRPQR)
413 writeFile("${module2}.pm", <<EOM, <<'EOM') ;
415 use Filter::Util::Call ;
433 if (($status = filter_read()) > 0) {
436 # and now the second line (it will append)
437 $status = filter_read() ;
447 writeFile($filename, <<EOM, <<'EOM') ;
462 $a = `$Perl -I. $Inc $filename 2>&1` ;
463 ok(15, ($? >>8) == 0) ;
464 ok(16, $a eq <<EOM) ;
472 writeFile("${block}.pm", <<EOM, <<'EOM') ;
474 use Filter::Util::Call ;
483 filter_add (bless [@strings] )
499 print "hello mum\n" ;
501 print "Who wants it?\n$x\n" ;
505 writeFile($filename, <<EOM, $string ) ;
509 $a = `$Perl -I. $Inc $filename 2>&1` ;
510 ok(17, ($? >>8) == 0) ;
511 ok(18, $a eq <<EOM) ;
520 writeFile("${block}.pm", <<EOM, <<'EOM') ;
522 use Filter::Util::Call ;
533 filter_add(bless [@strings] )
540 my ($here) = getcwd ;
542 if (($status = filter_read()) > 0) {
551 writeFile($filename, <<EOM, <<'EOM') ;
554 print "We are in DIR\n" ;
557 $a = `$Perl -I. $Inc $filename 2>&1` ;
558 ok(19, ($? >>8) == 0) ;
559 ok(20, $a eq <<EOM) ;
567 writeFile("${block}.pm", <<EOM, <<'EOM') ;
569 use Filter::Util::Call ;
579 filter_add(bless \$count )
588 if ($status = filter_read()) > 0 ;
591 filter_del() if $$self <= 0 ;
599 writeFile($filename, <<EOM, <<'EOM') ;
605 HERE today gone tomorrow\n" ;
608 $a = `$Perl -I. $Inc $filename 2>&1` ;
609 ok(21, ($? >>8) == 0) ;
610 ok(22, $a eq <<EOM) ;
614 HERE today gone tomorrow
621 writeFile("${block}.pm", <<EOM, <<'EOM') ;
623 use Filter::Util::Call ;
631 filter_add(bless [] )
639 if (($status = filter_read_exact(9)) > 0) {
649 writeFile($filenamebin, <<EOM, <<'EOM') ;
655 HERE today gone tomorrow\n" ;
658 $a = `$Perl -I. $Inc $filenamebin 2>&1` ;
659 ok(23, ($? >>8) == 0) ;
660 ok(24, $a eq <<EOM) ;
664 THERE today gone tomorrow
672 writeFile("${block}.pm", <<EOM, <<'EOM') ;
674 use Filter::Util::Call ;
682 filter_add(bless [] )
690 if (($status = filter_read()) > 0) {
700 writeFile($filename, <<EOM, <<'EOM') ;
709 HERE today gone tomorrow
712 $a = `$Perl -I. $Inc $filename 2>&1` ;
713 ok(25, ($? >>8) == 0) ;
714 ok(26, $a eq <<EOM) ;
718 HERE today gone tomorrow
728 writeFile("${block}.pm", <<EOM, <<'EOM') ;
730 use Filter::Util::Call ;
738 filter_add(bless [] )
746 if (($status = filter_read()) > 0) {
756 writeFile($filename, <<EOM, <<'EOM') ;
765 HERE today gone tomorrow
768 $a = `$Perl -I. $Inc $filename 2>&1` ;
769 ok(27, ($? >>8) == 0) ;
770 ok(28, $a eq <<EOM) ;
774 HERE today gone tomorrow
781 unlink $filenamebin ;
782 unlink "${module}.pm" ;
783 unlink "${module2}.pm" ;
784 unlink "${module3}.pm" ;
785 unlink "${module4}.pm" ;
786 unlink "${module5}.pm" ;
788 unlink "${block}.pm" ;