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 |