/[suikacvs]/markup/html/whatpm/t/HTML-tree.t
Suika

Diff of /markup/html/whatpm/t/HTML-tree.t

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.28 by wakaba, Sun Apr 13 10:36:41 2008 UTC revision 1.36 by wakaba, Sat Oct 4 11:32:16 2008 UTC
# Line 3  use strict; Line 3  use strict;
3    
4  my $DEBUG = $ENV{DEBUG};  my $DEBUG = $ENV{DEBUG};
5    
6    use lib qw[/home/wakaba/work/manakai2/lib];
7    
8  my $dir_name;  my $dir_name;
9  my $test_dir_name;  my $test_dir_name;
10  BEGIN {  BEGIN {
# Line 22  BEGIN { Line 24  BEGIN {
24  }  }
25    
26  use Test;  use Test;
27  BEGIN { plan tests => 1920 }  BEGIN { plan tests => 3105 }
28    
29  use Data::Dumper;  use Data::Dumper;
30  $Data::Dumper::Useqq = 1;  $Data::Dumper::Useqq = 1;
# Line 49  if ($DEBUG) { Line 51  if ($DEBUG) {
51    
52  for my $file_name (grep {$_} split /\s+/, qq[  for my $file_name (grep {$_} split /\s+/, qq[
53                        ${test_dir_name}tokenizer-test-2.dat                        ${test_dir_name}tokenizer-test-2.dat
54                          ${test_dir_name}tokenizer-test-3.dat
55                        ${dir_name}tests1.dat                        ${dir_name}tests1.dat
56                        ${dir_name}tests2.dat                        ${dir_name}tests2.dat
57                        ${dir_name}tests3.dat                        ${dir_name}tests3.dat
# Line 58  for my $file_name (grep {$_} split /\s+/ Line 61  for my $file_name (grep {$_} split /\s+/
61                        ${dir_name}tests7.dat                        ${dir_name}tests7.dat
62                        ${test_dir_name}tree-test-1.dat                        ${test_dir_name}tree-test-1.dat
63                        ${test_dir_name}tree-test-2.dat                        ${test_dir_name}tree-test-2.dat
64                          ${test_dir_name}tree-test-3.dat
65                          ${test_dir_name}tree-test-void.dat
66                          ${test_dir_name}tree-test-flow.dat
67                          ${test_dir_name}tree-test-phrasing.dat
68                          ${test_dir_name}tree-test-foreign.dat
69                       ]) {                       ]) {
70    open my $file, '<', $file_name    open my $file, '<', $file_name
71      or die "$0: $file_name: $!";      or die "$0: $file_name: $!";
# Line 85  for my $file_name (grep {$_} split /\s+/ Line 93  for my $file_name (grep {$_} split /\s+/
93        $test->{data} =~ s/\\u([0-9A-Fa-f]{4})/chr hex $1/ge if $escaped;        $test->{data} =~ s/\\u([0-9A-Fa-f]{4})/chr hex $1/ge if $escaped;
94        $test->{data} =~ s/\\U([0-9A-Fa-f]{8})/chr hex $1/ge if $escaped;        $test->{data} =~ s/\\U([0-9A-Fa-f]{8})/chr hex $1/ge if $escaped;
95        undef $escaped;        undef $escaped;
96        } elsif (/^#shoulds$/) {
97          $test->{shoulds} = [];
98          $mode = 'shoulds';
99      } elsif (/^#document$/) {      } elsif (/^#document$/) {
100        $test->{document} = '';        $test->{document} = '';
101        $mode = 'document';        $mode = 'document';
# Line 121  for my $file_name (grep {$_} split /\s+/ Line 132  for my $file_name (grep {$_} split /\s+/
132        } elsif ($mode eq 'errors') {        } elsif ($mode eq 'errors') {
133          tr/\x0D\x0A//d;          tr/\x0D\x0A//d;
134          push @{$test->{errors}}, $_;          push @{$test->{errors}}, $_;
135          } elsif ($mode eq 'shoulds') {
136            tr/\x0D\x0A//d;
137            push @{$test->{shoulds}}, $_;
138        }        }
139      }      }
140    }    }
# Line 129  for my $file_name (grep {$_} split /\s+/ Line 143  for my $file_name (grep {$_} split /\s+/
143    
144  use Whatpm::HTML;  use Whatpm::HTML;
145  use Whatpm::NanoDOM;  use Whatpm::NanoDOM;
146    use Whatpm::Charset::UnicodeChecker;
147    
148  sub test ($) {  sub test ($) {
149    my $test = shift;    my $test = shift;
150    
151    my $doc = Whatpm::NanoDOM::Document->new;    my $doc = Whatpm::NanoDOM::Document->new;
152    my @errors;    my @errors;
153      my @shoulds;
154        
155    $SIG{INT} = sub {    $SIG{INT} = sub {
156      print scalar serialize ($doc);      print scalar serialize ($doc);
# Line 143  sub test ($) { Line 159  sub test ($) {
159    
160    my $onerror = sub {    my $onerror = sub {
161      my %opt = @_;      my %opt = @_;
162      push @errors, join ':', $opt{line}, $opt{column}, $opt{type};      if ($opt{level} eq 's') {
163          push @shoulds, join ':', $opt{line}, $opt{column}, $opt{type};
164        } else {
165          push @errors, join ':', $opt{line}, $opt{column}, $opt{type};
166        }
167    };    };
168    
169      my $chk = sub {
170        return Whatpm::Charset::UnicodeChecker->new_handle ($_[0], 'html5');
171      }; # $chk
172    
173    my $result;    my $result;
174    unless (defined $test->{element}) {    unless (defined $test->{element}) {
175      Whatpm::HTML->parse_string ($test->{data} => $doc, $onerror);      Whatpm::HTML->parse_char_string ($test->{data} => $doc, $onerror, $chk);
176      $result = serialize ($doc);      $result = serialize ($doc);
177    } else {    } else {
178      my $el = $doc->create_element_ns      my $el = $doc->create_element_ns
179        ('http://www.w3.org/1999/xhtml', [undef, $test->{element}]);        ('http://www.w3.org/1999/xhtml', [undef, $test->{element}]);
180      Whatpm::HTML->set_inner_html ($el, $test->{data}, $onerror);      Whatpm::HTML->set_inner_html ($el, $test->{data}, $onerror, $chk);
181      $result = serialize ($el);      $result = serialize ($el);
182    }    }
183            
184    ok scalar @errors, scalar @{$test->{errors}},    ok scalar @errors, scalar @{$test->{errors}},
185      'Parse error: ' . Data::Dumper::qquote ($test->{data}) . '; ' .      'Parse error: ' . Data::Dumper::qquote ($test->{data}) . '; ' .
186      join (', ', @errors) . ';' . join (', ', @{$test->{errors}});      join (', ', @errors) . ';' . join (', ', @{$test->{errors}});
187      ok scalar @shoulds, scalar @{$test->{shoulds} or []},
188        'SHOULD-level error: ' . Data::Dumper::qquote ($test->{data}) . '; ' .
189        join (', ', @shoulds) . ';' . join (', ', @{$test->{shoulds} or []});
190    
191    ok $result, $test->{document},    ok $result, $test->{document},
192        'Document tree: ' . Data::Dumper::qquote ($test->{data});        'Document tree: ' . Data::Dumper::qquote ($test->{data});

Legend:
Removed from v.1.28  
changed lines
  Added in v.1.36

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24