# Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' ######################### We start with some black magic to print on failure. # Change 1..1 below to 1..last_test_to_print . # (It may become useful if the test is moved to ./t subdirectory.) my $loaded; BEGIN { $| = 1; print "1..49\n"; } END {print "not ok 1\n" unless $loaded;} use YAPE::HTML; use strict; $loaded = 1; print "ok 1\n"; ######################### End of black magic. # Insert your test code below (better if it prints "ok 13" # (correspondingly "not ok 13") depending on the success of chunk 13 # of the test code): my $i = 2; until (eof DATA) { my ($input,$expected,$code) = getData(); my $output; eval $code; warn $@ if $@; print "not " if $output ne $expected; print "ok ", $i++, "\n"; print " {$output}\n {$expected}\n" if $output ne $expected; } sub getData { my ($in,$out,$code); local $/; $/ = "\n"; ; # just for information $/ = "\n__EOI__\n"; chomp ($in = ); $/ = "\n__EOO__\n"; chomp ($out = ); $/ = "__EOC__\n\n"; chomp ($code = ); return ($in,$out,$code); } __DATA__ # TEST 2 -- no tag display Content __EOI__ Content __EOO__ my $parser = YAPE::HTML->new($input); $output = $parser->display(0); __EOC__ # TEST 3 -- one level of tag display Content __EOI__ Content __EOO__ my $parser = YAPE::HTML->new($input); $output = $parser->display(1); __EOC__ # TEST 4 -- 2 levels of tag display Content __EOI__ Content __EOO__ my $parser = YAPE::HTML->new($input); $output = $parser->display(2); __EOC__ # TEST 5 -- 3 levels of tag display Content __EOI__ Content __EOO__ my $parser = YAPE::HTML->new($input); $output = $parser->display(3); __EOC__ # TEST 6 -- complete tag display Content __EOI__ Content __EOO__ my $parser = YAPE::HTML->new($input); $output = $parser->display; __EOC__ # TEST 7 -- tag display w/o tags Content __EOI__ Content __EOO__ my $parser = YAPE::HTML->new($input); $output = $parser->display(['i']); __EOC__ # TEST 8 -- 2 levels of tag display w/o tags Content __EOI__ Content __EOO__ my $parser = YAPE::HTML->new($input); $output = $parser->display(['b'],2); __EOC__ # TEST 9 -- complete content output via root() Sample Page

Content

__EOI__ Sample Page

Content

__EOO__ my $parser = YAPE::HTML->new($input); $parser->parse; $output = $parser->root->[0]->fullstring; __EOC__ # TEST 10 -- complete content output via top() Sample Page

Content

__EOI__ Sample Page

Content

__EOO__ my $parser = YAPE::HTML->new($input); $parser->parse; $output = $parser->top->fullstring; __EOC__ # TEST 11 -- empty tag Some

Content __EOI__

__EOO__ my $parser = YAPE::HTML->new($input); $output = $parser->extract(p => [])->()->fullstring; __EOC__ # TEST 12 -- empty tag under strict Some

Content __EOI__

__EOO__ my $parser = YAPE::HTML->new($input,1); $output = $parser->extract(p => [])->()->fullstring; __EOC__ # TEST 13 -- automatic tag closure SomeContent __EOI__ Content __EOO__ my $parser = YAPE::HTML->new($input); $output = $parser->extract(i => [])->()->fullstring; __EOC__ # TEST 14 -- tag not closed, caught under strict SomeContent __EOI__ wanted '', found '' __EOO__ my $parser = YAPE::HTML->new($input,1); $parser->parse; $output = $parser->error; __EOC__ # TEST 15 -- tag never closed, caught under strict Content __EOI__ '' never closed __EOO__ my $parser = YAPE::HTML->new($input,1); $parser->parse; $output = $parser->error; __EOC__ # TEST 16 -- tag never closed, automatically done Content __EOI__ Content __EOO__ my $parser = YAPE::HTML->new($input); $output = $parser->extract(b => [])->()->fullstring; __EOC__ # TEST 17 -- extract

,

, ... tags

This

That


Those

__EOI__

This

That

Those

__EOO__ my $parser = YAPE::HTML->new($input); my $extor = $parser->extract(qr/^h\d$/ => []); while (my $tag = $extor->()) { $output .= $tag->fullstring } __EOC__ # TEST 18 -- extract tags other than

,

, ...

This

That


Those

__EOI__
__EOO__ my $parser = YAPE::HTML->new($input); my $extor = $parser->extract(qr/^h\D$/ => []); while (my $tag = $extor->()) { $output .= $tag->fullstring } __EOC__ # TEST 19 -- tags with 'align' an attribute

This

That


Those

__EOI__

That

Those

__EOO__ my $parser = YAPE::HTML->new($input); my $extor = $parser->extract(qr/^h\d/ => ['align']); while (my $tag = $extor->()) { $output .= $tag->fullstring } __EOC__ # TEST 20 -- extracting all text

This

That


Those

__EOI__ ThisThose __EOO__ my $parser = YAPE::HTML->new($input); my $extor = $parser->extract(-TEXT => ['s']); while (my $tag = $extor->()) { $output .= $tag->fullstring } __EOC__ # TEST 21 -- extracting all tags

This

That

Extraneous

Those

__EOI__

This

That

Those

__EOO__ my $parser = YAPE::HTML->new($input); my $extor = $parser->extract(-TAG => []); while (my $tag = $extor->()) { $output .= $tag->fullstring } __EOC__ # TEST 22 -- extracting all comments

This

That

Those

__EOI__ __EOO__ my $parser = YAPE::HTML->new($input); my $extor = $parser->extract(-COMMENT => []); while (my $tag = $extor->()) { $output .= $tag->fullstring } __EOC__ # TEST 23 -- extracting all comments and text This

That

Those

These __EOI__ This That Those These __EOO__ my $parser = YAPE::HTML->new($input); my $extor = $parser->extract(-COMMENT => [qr/[Ou]/], -TEXT => []); while (my $tag = $extor->()) { $output .= $tag->fullstring } __EOC__ # TEST 24 -- extracting all comments and tags This

That

Those

__EOI__

That

Those

__EOO__ my $parser = YAPE::HTML->new($input); my $extor = $parser->extract(-COMMENT => [], -TAG => []); while (my $tag = $extor->()) { $output .= $tag->fullstring } __EOC__ # TEST 25 -- extracting all comments and

tags This

That

Those

__EOI__

That

__EOO__ my $parser = YAPE::HTML->new($input); my $extor = $parser->extract(-COMMENT => [], h2 => []); while (my $tag = $extor->()) { $output .= $tag->fullstring } __EOC__ # TEST 26 -- intercepting text, whitespace included This < That < Those

That

Those

__EOI__ 5 __EOO__ my $parser = YAPE::HTML->new($input); while (my $chunk = $parser->next) { $output++ if $chunk->type eq 'text'; } __EOC__ # TEST 27 -- intercepting text, whitespace excluded This < That < Those

That

Those

__EOI__ 3 __EOO__ my $parser = YAPE::HTML->new($input); while (my $chunk = $parser->next) { $output++ if $chunk->type eq 'text' and $chunk->text =~ /\S/; } __EOC__ # TEST 28 -- intercepting open tags This < That < Those

That

Those

__EOI__ 2 __EOO__ my $parser = YAPE::HTML->new($input); while (my $chunk = $parser->next) { $output++ if $chunk->type eq 'tag'; } __EOC__ # TEST 29 -- intercepting all tags This < That < Those

That

Those

__EOI__ 4 __EOO__ my $parser = YAPE::HTML->new($input); while (my $chunk = $parser->next) { $output++ if $chunk->type =~ 'tag'; } __EOC__ # TEST 30 -- DTD handler This < That < Those

That

Those

__EOI__ This < That < Those

That

Those

__EOO__ my $parser = YAPE::HTML->new($input); $output = $parser->display; __EOC__ # TEST 31 -- quoting 1 100 __EOI__ 100 __EOO__ $output = YAPE::HTML::quote($input); __EOC__ # TEST 32 -- quoting 2 100.2 __EOI__ "100.2" __EOO__ $output = YAPE::HTML::quote($input); __EOC__ # TEST 33 -- quoting 3 "that's cool" __EOI__ ""that's cool"" __EOO__ $output = YAPE::HTML::quote($input); __EOC__ # TEST 34 -- new tag automatically closed SomeContent __EOI__ Content __EOO__ my $parser = YAPE::HTML->new($input); $output = $parser->extract(new => [])->()->fullstring; __EOC__ # TEST 35 -- new tag allowed to hang SomeContent __EOI__ Content __EOO__ my $parser = YAPE::HTML->new($input,1); YAPE::HTML::OPEN('NEW'); $output = $parser->extract(new => [])->()->fullstring; delete $YAPE::HTML::OPEN{NEW}; __EOC__ # TEST 36 -- new tag made empty SomeContent __EOI__ __EOO__ my $parser = YAPE::HTML->new($input,1); YAPE::HTML::EMPTY('NEW'); $output = $parser->extract(new => [])->()->fullstring; delete $YAPE::HTML::EMPTY{NEW}; __EOC__ # TEST 37 -- empty tag closing tag found, error thrown SomeContent __EOI__ wanted '
', found '' __EOO__ my $parser = YAPE::HTML->new($input,1); YAPE::HTML::EMPTY('NEW'); $parser->parse; $output = $parser->error; delete $YAPE::HTML::EMPTY{NEW}; __EOC__ # TEST 38 -- un-strict comment Here's a oops __EOI__ __EOO__ my $parser = YAPE::HTML->new($input); $output = $parser->extract(-COMMENT => [])->()->fullstring; __EOC__ # TEST 39 -- un-strict comment, under strict Here's a oops __EOI__ malformed comment __EOO__ my $parser = YAPE::HTML->new($input,1); $parser->parse; $output = $parser->error; __EOC__ # TEST 40 -- strict comment Here's a comment --> yay! __EOI__ __EOO__ my $parser = YAPE::HTML->new($input); $output = $parser->extract(-COMMENT => [])->()->fullstring; __EOC__ # TEST 41 -- strict comment, under strict Here's a comment --> yay! __EOI__ comment --> __EOO__ my $parser = YAPE::HTML->new($input,1); $output = $parser->extract(-COMMENT => [])->()->fullstring; __EOC__ # TEST 42 -- strict comment pathological case #1 valid valid __EOI__ __EOO__ my $parser = YAPE::HTML->new($input,1); $output = $parser->extract(-COMMENT => [])->()->text; __EOC__ # TEST 44 -- strict comment pathological case #3 valid valid __EOI__ ---- __EOO__ my $parser = YAPE::HTML->new($input,1); $output = $parser->extract(-COMMENT => [])->()->text; __EOC__ # TEST 45 -- strict comment pathological case #4 valid --> valid __EOI__ ----> __EOO__ my $parser = YAPE::HTML->new($input,1); $output = $parser->extract(-COMMENT => [])->()->text; __EOC__ # TEST 46 -- SSI test #1 __EOI__ __EOO__ my $parser = YAPE::HTML->new($input); $output = $parser->extract(-SSI => [])->()->string; __EOC__ # TEST 47 -- SSI test #2 __EOI__ __EOO__ my $parser = YAPE::HTML->new($input); $output = $parser->extract(-SSI => [])->()->string; __EOC__ # TEST 48 -- SSI test #3 __EOI__ unknown SSI attribute 'do' for 'exec' __EOO__ my $parser = YAPE::HTML->new($input); $parser->parse; $output = $parser->error; __EOC__ # TEST 49 -- SSI test #4 __EOI__ unknown SSI command 'unknown' __EOO__ my $parser = YAPE::HTML->new($input); $parser->parse; $output = $parser->error; __EOC__