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

Contents of /messaging/manakai/t/DOM-NodeList.t

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download) (as text)
Sat Jun 16 08:05:48 2007 UTC (17 years, 10 months ago) by wakaba
Branch: MAIN
File MIME type: application/x-troff
++ manakai/t/ChangeLog	16 Jun 2007 08:01:18 -0000
	* DOM-NodeList.t: New test.

2007-06-16  Wakaba  <wakaba@suika.fam.cx>

++ manakai/lib/Message/DOM/ChangeLog	16 Jun 2007 08:05:30 -0000
	* Attr.pm, AttributeDefinition.pm, DocumentFragment.pm,
	DocumentType.pm, Entity.pm,
	EntityReference.pm (____new): Initialize |child_nodes| by an empty list.

	* Node.pm, DOMCharacterData.pm, ElementTypeDefinition.pm,
	Notation.pm, ProcessingInstruction.pm (child_nodes): Implemetned.

	* DOMDocument.pm (AUTOLOAD): Typo fixed.

	* Node.pm (==, !=): Implemented.
	(manakai_read_only): Implemented.
	(is_same_node): Implemented.
	(is_equal_node): Alpha version.
	(manakai_set_read_only): Alpha version.
	(child_nodes, first_child, last_child, previous_sibling): Duplicate
	definitions are removed.

2007-06-16  Wakaba  <wakaba@suika.fam.cx>

1 wakaba 1.1 #!/usr/bin/perl
2     use strict;
3     use Test;
4     BEGIN { plan tests => 10 }
5    
6     require Message::DOM::DOMImplementation;
7    
8     my $dom = Message::DOM::DOMImplementation->____new;
9     my $doc = $dom->create_document;
10    
11     for my $parent (create_parent_nodes ()) {
12     my $node1;
13     my $node2;
14     my $node1a;
15     my $node2a;
16     if ($parent->node_type == $parent->DOCUMENT_TYPE_NODE) {
17     $node1 = $doc->create_processing_instruction ('pi1', 'data1');
18     $node2 = $doc->create_processing_instruction ('pi2', 'data2');
19     $node1a = $doc->create_processing_instruction ('pi1', 'data1');
20     $node2a = $doc->create_processing_instruction ('pi2', 'data2');
21     } elsif ($parent->node_type == $parent->DOCUMENT_NODE) {
22     $node1 = $doc->create_comment ('comment1');
23     $node2 = $doc->create_comment ('comment2');
24     $node1a = $doc->create_comment ('comment1');
25     $node2a = $doc->create_comment ('comment2');
26     } else {
27     $node1 = $doc->create_text_node ('text1');
28     $node2 = $doc->create_text_node ('text2');
29     $node1a = $doc->create_text_node ('text1');
30     $node2a = $doc->create_text_node ('text2');
31     }
32    
33     my $cn = $parent->child_nodes;
34     ok UNIVERSAL::isa ($cn, 'Message::IF::NodeList') ? 1 : 0, 1,
35     'childNodes.interface';
36     ok $cn ? 1 : 0, 1, 'bool';
37    
38     ok $cn->can ('manakai_read_only') ? 1 : 0, 1, 'can childNodes.manakaiReadOnly';
39     $parent->manakai_set_read_only (1);
40     ok $cn->manakai_read_only ? 1 : 0, 1, 'childNodes.manakaiReadOnly (1)';
41     $parent->manakai_set_read_only (0);
42     ok $cn->manakai_read_only ? 1 : 0, 0, 'childNodes.manakaiReadOnly (0)';
43    
44     ok $cn->can ('length') ? 1 : 0, 1, 'can childNodes.length [0]';
45     ok $cn->length, 0, 'childNodes.length [0]';
46    
47     ok $cn->can ('item') ? 1 : 0, 1, 'can childNodes.item';
48     ok $cn->item (0), undef, 'childNodes.item (0) [0]';
49     ok $cn->item (1), undef, 'childNodes.item (1) [0]';
50     ok $cn->item (-1), undef, 'childNodes.item (-1) [0]';
51     ok $cn->item (undef), undef, 'childNodes.item (undef) [0]';
52    
53     $parent->append_child ($node1);
54    
55     ok $cn->length, 1, 'childNodes.length [1]';
56    
57     ok $cn->item (0), $node1, 'childNodes.item (0) [1]';
58     ok $cn->item (1), undef, 'childNodes.item (1) [1]';
59     ok $cn->item (-1), undef, 'childNodes.item (-1) [1]';
60     ok $cn->item (undef), $node1, 'childNodes.item (undef) [1]';
61    
62     $parent->append_child ($node2);
63    
64     ok $cn->length, 2, 'childNodes.length [2]';
65    
66     ok $cn->item (0), $node1, 'childNodes.item (0) [2]';
67     ok $cn->item (1), $node2, 'childNodes.item (1) [2]';
68     ok $cn->item (-1), undef, 'childNodes.item (-1) [2]';
69     ok $cn->item (undef), $node1, 'childNodes.item (undef) [2]';
70    
71     ok $cn eq $cn ? 1 : 0, 1, 'A eq A';
72     ok $cn ne $cn ? 1 : 0, 0, 'A ne A';
73     ok $cn == $cn ? 1 : 0, 1, 'A == A';
74     ok $cn != $cn ? 1 : 0, 0, 'A != A';
75    
76     my $cn2 = $parent->child_nodes;
77     ok $cn eq $cn2 ? 1 : 0, 1, "A eq A'";
78     ok $cn ne $cn2 ? 1 : 0, 0, "A ne A'";
79     ok $cn == $cn2 ? 1 : 0, 1, "A == A'";
80     ok $cn != $cn2 ? 1 : 0, 0, "A != A'";
81    
82     my $parenta = $doc->create_element ('element');
83     my $cn3 = $parenta->child_nodes;
84     ok $cn eq $cn3 ? 1 : 0, 0, 'A eq B (A != B)';
85     ok $cn ne $cn3 ? 1 : 0, 1, 'A ne B (A != B)';
86     ok $cn == $cn3 ? 1 : 0, 0, 'A == B (A != B)';
87     ok $cn != $cn3 ? 1 : 0, 1, 'A != B (A != B)';
88    
89     $parenta->append_child ($node1a);
90     $parenta->append_child ($node2a);
91     ok $cn eq $cn3 ? 1 : 0, 0, 'A eq B (A == B)';
92     ok $cn ne $cn3 ? 1 : 0, 1, 'A ne B (A == B)';
93     ok $cn == $cn3 ? 1 : 0, 1, 'A == B (A == B)';
94     ok $cn != $cn3 ? 1 : 0, 0, 'A != B (A == B)';
95     }
96    
97     ## TODO: tests for @{$node_list} and @{$empty_node_list}
98    
99     sub create_leaf_nodes () {
100     (
101     $doc->create_cdata_section ('cdata1'),
102     $doc->create_comment ('comment1'),
103     $doc->create_notation ('notation1'),
104     $doc->create_processing_instruction ('pi1', 'pi1data'),
105     $doc->create_text_node ('text1'),
106     );
107     } # create_leaf_nodes
108    
109     sub create_parent_nodes () {
110     (
111     $doc->create_attribute ('attr1'),
112     $doc->create_attribute_definition ('at1'),
113     $doc->create_element ('element1'),
114     $doc->create_general_entity ('entity1'),
115     $doc->create_entity_reference ('entity-reference1'),
116     $doc->implementation->create_document,
117     $doc->create_document_fragment,
118     $doc->create_document_type_definition ('dt1'),
119     );
120     } # create_parent_nodes

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24