/[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.2 by wakaba, Tue May 1 06:22:12 2007 UTC revision 1.4 by wakaba, Tue May 1 10:47:37 2007 UTC
# Line 20  BEGIN { Line 20  BEGIN {
20  }  }
21    
22  use Test;  use Test;
23  BEGIN { plan tests => 402 }  BEGIN { plan tests => 410 }
24    
25  use Data::Dumper;  use Data::Dumper;
26  $Data::Dumper::Useqq = 1;  $Data::Dumper::Useqq = 1;
# Line 70  for my $file_name (grep {$_} split /\s+/ Line 70  for my $file_name (grep {$_} split /\s+/
70    test ($test) if $test->{errors};    test ($test) if $test->{errors};
71  }  }
72    
73  use What::HTML;  use Whatpm::HTML;
74    use Whatpm::NanoDOM;
75    
76  sub test ($) {  sub test ($) {
77    my $test = shift;    my $test = shift;
78    
79    my $s = $test->{data};    my $doc = Whatpm::NanoDOM::Document->new;
   
   my $p = What::HTML->new;  
   my $i = 0;  
   $p->{set_next_input_character} = sub {  
     my $self = shift;  
     $self->{next_input_character} = -1 and return if $i >= length $s;  
     $self->{next_input_character} = ord substr $s, $i++, 1;  
       
     if ($self->{next_input_character} == 0x000D) { # CR  
       if ($i >= length $s) {  
         #  
       } else {  
         my $next_char = ord substr $s, $i++, 1;  
         if ($next_char == 0x000A) { # LF  
           #  
         } else {  
           push @{$self->{char}}, $next_char;  
         }  
       }  
       $self->{next_input_character} = 0x000A; # LF # MUST  
     } elsif ($self->{next_input_character} > 0x10FFFF) {  
       $self->{next_input_character} = 0xFFFD; # REPLACEMENT CHARACTER # MUST  
     } elsif ($self->{next_input_character} == 0x0000) { # NULL  
       $self->{next_input_character} = 0xFFFD; # REPLACEMENT CHARACTER # MUST  
     }  
   };  
     
80    my @errors;    my @errors;
   $p->{parse_error} = sub {  
     my $msg = shift;  
     push @errors, $msg;  
   };  
81        
82    $SIG{INT} = sub {    $SIG{INT} = sub {
83      print scalar serialize ($p->{document});      print scalar serialize ($doc);
84      exit;      exit;
85    };    };
86      
87    $p->_initialize_tokenizer;    Whatpm::HTML->parse_string
88    $p->_initialize_tree_constructor;        ($test->{data} => $doc, sub {
89    $p->_construct_tree;           my $msg = shift;
90    $p->_terminate_tree_constructor;           push @errors, $msg;
91           });
92    
93    ok scalar @errors, scalar @{$test->{errors}},    ok scalar @errors, scalar @{$test->{errors}},
94      'Parse error: ' . $test->{data} . '; ' .      'Parse error: ' . $test->{data} . '; ' .
95      join (', ', @errors) . ';' . join (', ', @{$test->{errors}});      join (', ', @errors) . ';' . join (', ', @{$test->{errors}});
96    
   my $doc = $p->{document};  
97    my $doc_s = serialize ($doc);    my $doc_s = serialize ($doc);
98    ok $doc_s, $test->{document}, 'Document tree: ' . $test->{data};    ok $doc_s, $test->{document}, 'Document tree: ' . $test->{data};
99  } # test  } # test

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.4

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24