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

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

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

revision 1.3 by wakaba, Mon Apr 30 14:12:02 2007 UTC revision 1.9 by wakaba, Sat Jun 23 03:53:35 2007 UTC
# Line 2  Line 2 
2  use strict;  use strict;
3    
4  my $dir_name;  my $dir_name;
5    my $test_dir_name;
6  BEGIN {  BEGIN {
7    my $test_dir_name = 't/';    $test_dir_name = 't/';
8    $dir_name = 't/tokenizer/';    $dir_name = 't/tokenizer/';
9    my $skip = "You don't have JSON module";    my $skip = "You don't have JSON module";
10    eval q{    eval q{
# Line 23  BEGIN { Line 24  BEGIN {
24  }  }
25    
26  use Test;  use Test;
27  BEGIN { plan tests => 67 }  BEGIN { plan tests => 94 }
28    
29  use Data::Dumper;  use Data::Dumper;
30  $Data::Dumper::Useqq = 1;  $Data::Dumper::Useqq = 1;
# Line 33  sub Data::Dumper::qquote { Line 34  sub Data::Dumper::qquote {
34    return q<qq'> . $s . q<'>;    return q<qq'> . $s . q<'>;
35  } # Data::Dumper::qquote  } # Data::Dumper::qquote
36    
37  use What::HTML;  use Whatpm::HTML;
38    
39  for my $file_name (qw[  for my $file_name (grep {$_} split /\s+/, qq[
40                        test1.test                        ${dir_name}test1.test
41                        test2.test                        ${dir_name}test2.test
42                        contentModelFlags.test                        ${dir_name}contentModelFlags.test
43                          ${dir_name}escapeFlag.test
44                          ${test_dir_name}tokenizer-test-1.test
45                       ]) {                       ]) {
46    open my $file, '<', $dir_name.$file_name    open my $file, '<', $file_name
47      or die "$0: $dir_name$file_name: $!";      or die "$0: $file_name: $!";
48    local $/ = undef;    local $/ = undef;
49    my $js = <$file>;    my $js = <$file>;
50    close $file;    close $file;
51      
52      print "# $file_name\n";
53    my $tests = jsonToObj ($js)->{tests};    my $tests = jsonToObj ($js)->{tests};
54    TEST: for my $test (@$tests) {    TEST: for my $test (@$tests) {
55      my $s = $test->{input};      my $s = $test->{input};
# Line 66  for my $file_name (qw[ Line 70  for my $file_name (qw[
70      my @cm = @{$test->{contentModelFlags} || ['PCDATA']};      my @cm = @{$test->{contentModelFlags} || ['PCDATA']};
71      my $last_start_tag = $test->{lastStartTag};      my $last_start_tag = $test->{lastStartTag};
72      for my $cm (@cm) {      for my $cm (@cm) {
73        my $p = What::HTML->new;        my $p = Whatpm::HTML->new;
74        my $i = 0;        my $i = 0;
75          my @token;
76        $p->{set_next_input_character} = sub {        $p->{set_next_input_character} = sub {
77          my $self = shift;          my $self = shift;
78          $self->{next_input_character} = -1 and return if $i >= length $s;          $self->{next_input_character} = -1 and return if $i >= length $s;
# Line 87  for my $file_name (qw[ Line 92  for my $file_name (qw[
92            $self->{next_input_character} = 0x000A; # LF # MUST            $self->{next_input_character} = 0x000A; # LF # MUST
93          } elsif ($self->{next_input_character} > 0x10FFFF) {          } elsif ($self->{next_input_character} > 0x10FFFF) {
94            $self->{next_input_character} = 0xFFFD; # REPLACEMENT CHARACTER # MUST            $self->{next_input_character} = 0xFFFD; # REPLACEMENT CHARACTER # MUST
95              push @token, 'ParseError';
96          } elsif ($self->{next_input_character} == 0x0000) { # NULL          } elsif ($self->{next_input_character} == 0x0000) { # NULL
97            $self->{next_input_character} = 0xFFFD; # REPLACEMENT CHARACTER # MUST            $self->{next_input_character} = 0xFFFD; # REPLACEMENT CHARACTER # MUST
98              push @token, 'ParseError';
99          }          }
100        };        };
101                
       my @token;  
102        $p->{parse_error} = sub {        $p->{parse_error} = sub {
103          push @token, 'ParseError';          push @token, 'ParseError';
104        };        };

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.9

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24