/[suikacvs]/messaging/manakai/t/DOM-Document.t
Suika

Diff of /messaging/manakai/t/DOM-Document.t

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

revision 1.2 by wakaba, Sun Jun 17 13:37:42 2007 UTC revision 1.7 by wakaba, Sun Nov 18 11:08:43 2007 UTC
# Line 1  Line 1 
1  #!/usr/bin/perl  #!/usr/bin/perl
2  use strict;  use strict;
3  use Test;  use Test;
4  BEGIN { plan tests => 55 }  BEGIN { plan tests => 139 }
5    
6  require Message::DOM::DOMImplementation;  require Message::DOM::DOMImplementation;
7  use Message::Util::Error;  use Message::Util::Error;
8    
9  ## TODO: |create_document| tests  ## TODO: |create_document| tests
10    
11  my $dom = Message::DOM::DOMImplementation->____new;  my $dom = Message::DOM::DOMImplementation->new;
12  my $doc = $dom->create_document;  my $doc = $dom->create_document;
13    
14  ## AUTOLOAD test  ## AUTOLOAD test
# Line 156  my $html_doc = $doc->implementation->cre Line 156  my $html_doc = $doc->implementation->cre
156    $doc->strict_error_checking (1);    $doc->strict_error_checking (1);
157  }  }
158    
159  for my $prop (qw/document_uri input_encoding/) {  for my $prop (qw/document_uri input_encoding manakai_charset/) {
160    ok $doc->can ($prop) ? 1 : 0, 1, 'can ' . $prop;    ok $doc->can ($prop) ? 1 : 0, 1, 'can ' . $prop;
161        
162    for ('http://absuri.test/', 'reluri', 0, '') {    for ('http://absuri.test/', 'reluri', 0, '') {
# Line 168  for my $prop (qw/document_uri input_enco Line 168  for my $prop (qw/document_uri input_enco
168    ok $doc->$prop, undef, $prop . ' undef';    ok $doc->$prop, undef, $prop . ' undef';
169  }  }
170    
171  for my $prop (qw/all_declarations_processed/) {  for my $prop (qw/all_declarations_processed manakai_has_bom/) {
172    ok $doc->can ($prop) ? 1 : 0, 1, 'can ' . $prop;    ok $doc->can ($prop) ? 1 : 0, 1, 'can ' . $prop;
173        
174    for (1, 0, '') {    for (1, 0, '') {
# Line 180  for my $prop (qw/all_declarations_proces Line 180  for my $prop (qw/all_declarations_proces
180    ok $doc->$prop ? 1 : 0, 0, $prop . ' undef';    ok $doc->$prop ? 1 : 0, 0, $prop . ' undef';
181  }  }
182    
183    ## |manakaiIsHTML|, |compatMode|, and |manakaiCompatMode|
184    {
185      my $doc2 = $doc->implementation->create_document;
186      ok $doc2->can ('manakai_is_html') ? 1 : 0, 1, "can manakai_is_html";
187      ok $doc2->can ('compat_mode') ? 1 : 0, 1, "can compat_mode";
188      ok $doc2->can ('manakai_compat_mode') ? 1 : 0, 1, "can manakai_compat_mode";
189      ok $doc2->manakai_is_html ? 1 : 0, 0, "manakai_is_html [0]";
190      ok $doc2->compat_mode, 'CSS1Compat', 'compat_mode [0]';
191      ok $doc2->manakai_compat_mode, 'no quirks', 'manakai_compat_mode [0]';
192    
193      $doc2->manakai_compat_mode ('quirks');
194      ok $doc2->manakai_is_html ? 1 : 0, 0, "manakai_is_html [1]";
195      ok $doc2->compat_mode, 'CSS1Compat', 'compat_mode [1]';
196      ok $doc2->manakai_compat_mode, 'no quirks', 'manakai_compat_mode [1]';
197    
198      $doc2->manakai_compat_mode ('limited quirks');
199      ok $doc2->manakai_is_html ? 1 : 0, 0, "manakai_is_html [2]";
200      ok $doc2->compat_mode, 'CSS1Compat', 'compat_mode [2]';
201      ok $doc2->manakai_compat_mode, 'no quirks', 'manakai_compat_mode [2]';
202    
203      $doc2->manakai_compat_mode ('no quirks');
204      ok $doc2->manakai_is_html ? 1 : 0, 0, "manakai_is_html [3]";
205      ok $doc2->compat_mode, 'CSS1Compat', 'compat_mode [3]';
206      ok $doc2->manakai_compat_mode, 'no quirks', 'manakai_compat_mode [3]';
207    
208      $doc2->manakai_compat_mode ('bogus');
209      ok $doc2->manakai_is_html ? 1 : 0, 0, "manakai_is_html [4]";
210      ok $doc2->compat_mode, 'CSS1Compat', 'compat_mode [4]';
211      ok $doc2->manakai_compat_mode, 'no quirks', 'manakai_compat_mode [4]';
212    
213      $doc2->manakai_is_html (1);
214      ok $doc2->manakai_is_html ? 1 : 0, 1, "manakai_is_html [5]";
215      ok $doc2->compat_mode, 'CSS1Compat', 'compat_mode [5]';
216      ok $doc2->manakai_compat_mode, 'no quirks', 'manakai_compat_mode [5]';
217    
218      $doc2->manakai_compat_mode ('quirks');
219      ok $doc2->manakai_is_html ? 1 : 0, 1, "manakai_is_html [6]";
220      ok $doc2->compat_mode, 'BackCompat', 'compat_mode [6]';
221      ok $doc2->manakai_compat_mode, 'quirks', 'manakai_compat_mode [6]';
222    
223      $doc2->manakai_compat_mode ('limited quirks');
224      ok $doc2->manakai_is_html ? 1 : 0, 1, "manakai_is_html [7]";
225      ok $doc2->compat_mode, 'CSS1Compat', 'compat_mode [7]';
226      ok $doc2->manakai_compat_mode, 'limited quirks', 'manakai_compat_mode [7]';
227    
228      $doc2->manakai_compat_mode ('no quirks');
229      ok $doc2->manakai_is_html ? 1 : 0, 1, "manakai_is_html [8]";
230      ok $doc2->compat_mode, 'CSS1Compat', 'compat_mode [8]';
231      ok $doc2->manakai_compat_mode, 'no quirks', 'manakai_compat_mode [8]';
232    
233      $doc2->manakai_compat_mode ('bogus');
234      ok $doc2->manakai_is_html ? 1 : 0, 1, "manakai_is_html [9]";
235      ok $doc2->compat_mode, 'CSS1Compat', 'compat_mode [9]';
236      ok $doc2->manakai_compat_mode, 'no quirks', 'manakai_compat_mode [9]';
237    
238      $doc2->manakai_compat_mode ('quirks');
239      $doc2->manakai_is_html (0);
240      ok $doc2->manakai_is_html ? 1 : 0, 0, "manakai_is_html [10]";
241      ok $doc2->compat_mode, 'CSS1Compat', 'compat_mode [10]';
242      ok $doc2->manakai_compat_mode, 'no quirks', 'manakai_compat_mode [10]';
243    
244      $doc2->manakai_is_html (1);
245      ok $doc2->manakai_is_html ? 1 : 0, 1, "manakai_is_html [11]";
246      ok $doc2->compat_mode, 'CSS1Compat', 'compat_mode [11]';
247      ok $doc2->manakai_compat_mode, 'no quirks', 'manakai_compat_mode [11]';
248    }
249    
250    {
251      ok $doc->can ('implementation') ? 1 : 0, 1, 'Document->implementation can';
252      my $impl = $doc->implementation;
253      ok UNIVERSAL::isa ($impl, 'Message::DOM::DOMImplementation') ? 1 : 0,
254          1, 'Document->implementation class';
255      my $impl2 = $doc->implementation;
256      ok $impl eq $impl2 ? 1 : 0, 1, 'Document->implementation eq D->i';
257      ok $impl ne $impl2 ? 1 : 0, 0, 'Document->implementation ne D->i';
258      ok $impl == $impl2 ? 1 : 0, 1, 'Document->implementation == D->i';
259      ok $impl != $impl2 ? 1 : 0, 0, 'Document->implementation != D->i';
260    }
261    
262    {
263      my $doc2 = $doc->implementation->create_document;
264      ok $doc2->doctype, undef, 'Document->implementation [0]';
265    
266      my $doctype = $doc2->implementation->create_document_type ('dt');
267      my $el = $doc2->create_element_ns (undef, 'e');
268      $doc2->append_child ($doctype);
269      $doc2->append_child ($el);
270    
271      ok $doc2->doctype, $doctype, 'Document->implementation [1]';
272    }
273    
274    {
275      my $doc2 = $doc->implementation->create_document;
276      my $doctype = $doc2->implementation->create_document_type ('dt');
277      my $el = $doc2->create_element_ns (undef, 'e');
278      my $comment = $doc2->create_comment ('');
279      $doc2->append_child ($comment);
280      $doc2->append_child ($doctype);
281      $doc2->append_child ($el);
282    
283      ok $doc2->doctype, $doctype, 'Document->implementation [2]';
284    }
285    
286    {
287      my $doc2 = $doc->implementation->create_document;
288      ok $doc2->can ('document_element') ? 1 : 0, 1, 'Document->document_el can';
289      ok $doc2->document_element, undef, 'Document->document_element [0]';
290    
291      my $el = $doc2->create_element_ns (undef, 'e');
292      $doc2->append_child ($el);
293    
294      ok $doc2->document_element, $el, 'Document->document_element [1]';
295    }
296    
297    {
298      my $doc2 = $doc->implementation->create_document;
299      my $doctype = $doc2->implementation->create_document_type ('dt');
300      $doc2->append_child ($doctype);
301      my $el = $doc2->create_element_ns (undef, 'e');
302      $doc2->append_child ($el);
303    
304      ok $doc2->document_element, $el, 'Document->document_element [1]';
305    }
306    
307    {
308      ok $doc->can ('dom_config') ? 1 : 0, 1, 'Document->dom_config can';
309      my $cfg = $doc->dom_config;
310      ok UNIVERSAL::isa ($cfg, 'Message::IF::DOMConfiguration') ? 1 : 0,
311          1, 'Document->dom_config interface';
312    }
313    
314    {
315      my $impl = $doc->implementation;
316      my $doc1 = $impl->create_document;
317      my $doc2 = $impl->create_document;
318    
319      ok $doc2->can ('adopt_node') ? 1 : 0, 1, 'Document->adopt_node can';
320    
321      my $el1 = $doc1->create_element_ns (undef, 'e');
322      my $el2 = $doc2->adopt_node ($el1);
323    
324      ok $el1 eq $el2 ? 1 : 0, 1, 'Document->adopt_node return == source';
325      ok $el2->owner_document, $doc2, 'Document->adopt_node owner_document';
326      
327      my $node = $doc1->create_element ('e');
328      my $udh_called = 0;
329      $node->set_user_data (key => {}, sub {
330        my ($op, $key, $data, $src, $dest) = @_;
331        $udh_called = 1;
332        
333        ok $op, 5, 'adopt_node user data handler operation';
334        ok $key, 'key', 'adopt_node user data handler key';
335        ok ref $data, 'HASH', 'adopt_node user data handler data';
336        ok $src, $node, 'adopt_node user data handler src';
337        ok $dest, undef, 'adopt_node user data handler dest';
338      });
339    
340      $doc2->adopt_node ($node);
341    
342      ok $udh_called, 1, 'Document->adopt_node udh called';
343    
344      $node->set_user_data (key => undef, undef);
345    
346      my $el3 = $doc1->create_element_ns (undef, 'e');
347      my $el4 = $doc1->adopt_node ($el3);
348      
349      ok $el4, $el3, 'Document->adopt_node samedoc return';
350      ok $el4->owner_document, $doc1, 'Document->adopt_node samedoc od';
351    
352      my $parent = $doc1->create_element ('pa');
353      my $child = $doc1->create_element ('ch');
354      $parent->append_child ($child);
355    
356      my $child2 = $doc2->adopt_node ($child);
357      
358      ok $child2, $child, 'Document->adopt_node return [2]';
359      ok $child2->owner_document, $doc2, 'Document->adopt_node->od [2]';
360      ok $child2->parent_node, undef, 'Document->adopt_node->parent_node [2]';
361      ok 0+@{$parent->child_nodes}, 0, 'Document->adopt_node parent->cn @{} 0+ [2]';
362    
363      my $attr = $doc1->create_attribute ('e');
364      $parent->set_attribute_node ($attr);
365    
366      my $attr2 = $doc2->adopt_node ($attr);
367      ok $attr2, $attr, 'Document->adopt_node return [3]';
368      ok $attr2->owner_document, $doc2, 'Document->adopt_node->od [3]';
369      ok $attr2->owner_element, undef, 'Document->adopt_node->oe [3]';
370      ok 0+@{$parent->attributes}, 0, 'Document->adopt_node parent->a @{} 0+ [3]';
371    }
372    
373  ## TODO: manakai_entity_base_uri  ## TODO: manakai_entity_base_uri
374    
375  =head1 LICENSE  =head1 LICENSE

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24