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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download) (as text)
Sat Jul 14 16:32:28 2007 UTC (17 years, 4 months ago) by wakaba
Branch: MAIN
CVS Tags: manakai-release-0-4-0, HEAD
File MIME type: application/x-troff
++ manakai/t/ChangeLog	14 Jul 2007 16:32:13 -0000
2007-07-15  Wakaba  <wakaba@suika.fam.cx>

	* DOM-TreeWalker.t, DOM-SerialWalker.t: New test scripts.

	* DOM-DOMImplementation.t: Tests for |Traversal| feature
	are added.

	* DOM-Node.t: Tests for |Traversal| feature are added.

++ manakai/lib/Message/DOM/ChangeLog	14 Jul 2007 16:31:23 -0000
2007-07-15  Wakaba  <wakaba@suika.fam.cx>

	* TreeWalker.pm, SerialWalker.pm: New Perl modules.

	* Text.pm (whole_text): Parameter index number has
	been changed to support new |NodeFilter| Perl binding
	definition.

2007-07-14  Wakaba  <wakaba@suika.fam.cx>

	* AttributeDefinition.pm, DOMElement.pm, DocumentType.pm,
	ElementTypeDefinition.pm, Entity.pm, EntityReference.pm,
	Notation.pm, ProcessingInstruction.pm (AUTOLOAD): Don't croak even if an attempt is made to modify a read-only attribute.

	* DOMConfiguration.pm (can_set_parameter,
	set_parameter): Don't allow to set the value
	to a string other than <http://www.w3.org/TR/REC-xml> (XML 1.0 DTD).

	* DOMDocument.pm (Message::IF::DocumentTraversal): New interface.
	(create_tree_walker, manakai_create_serial_walker): References
	and prototypes are added.

	* DOMException.pm (NULLPO_ERR): New error type:-).

	* DOMImplementation.pm ($HasFeature): Feature |Traversal|,
	version |2.0|, is added.

1 wakaba 1.1 #!/usr/bin/perl
2     use strict;
3     use Test;
4     BEGIN { plan tests => 258 }
5    
6     require Message::DOM::DOMImplementation;
7     use Message::Util::Error;
8    
9     my $dom = Message::DOM::DOMImplementation->new;
10     my $doc = $dom->create_document;
11    
12     ## |manakai_create_serial_walker| and attributes
13     {
14     ok $doc->can ('manakai_create_serial_walker') ? 1 : 0, 1, 'create_sw can';
15    
16     my $el = $doc->create_element ('e');
17     my $tw = $doc->manakai_create_serial_walker ($el);
18    
19     ok $tw->isa ('Message::IF::SerialWalker') ? 1 : 0, 1, 'create_sw [1] if';
20     ok $tw->what_to_show, 0, 'create_sw [1] what_to_show';
21     ok $tw->filter, undef, 'create_sw [1] filter';
22     ok $tw->expand_entity_references ? 1 : 0, 0, 'create_sw [1] xent';
23     ok $tw->current_node, $el, 'create_sw [1] current_node';
24     ok $tw->root, $el, 'create_sw [1] root';
25     }
26     {
27     my $el = $doc->create_element ('e');
28     my $filter = sub { };
29     my $tw = $doc->manakai_create_serial_walker ($el, 0xFFFFFFFF, $filter, 1);
30    
31     ok $tw->isa ('Message::IF::SerialWalker') ? 1 : 0, 1, 'create_sw [2] if';
32     ok $tw->what_to_show, 0xFFFFFFFF, 'create_sw [2] what_to_show';
33     ok $tw->filter, $filter, 'create_sw [2] filter';
34     ok $tw->expand_entity_references ? 1 : 0, 1, 'create_sw [2] xent';
35     ok $tw->current_node, $el, 'create_sw [2] current_node';
36     ok $tw->root, $el, 'create_sw [2] root';
37     }
38     {
39     my $el = $doc->create_element ('e');
40     my $filter = sub { };
41     my $tw = $doc->manakai_create_serial_walker ($el, 0xFFFFFFFF, $filter, 0);
42    
43     ok $tw->isa ('Message::IF::SerialWalker') ? 1 : 0, 1, 'create_sw [3] if';
44     ok $tw->what_to_show, 0xFFFFFFFF, 'create_sw [3] what_to_show';
45     ok $tw->filter, $filter, 'create_sw [3] filter';
46     ok $tw->expand_entity_references ? 1 : 0, 0, 'create_sw [3] xent';
47     ok $tw->current_node, $el, 'create_sw [3] current_node';
48     ok $tw->root, $el, 'create_sw [3] root';
49     }
50     try {
51     $doc->manakai_create_serial_walker;
52     ok 1, 0, 'create_sw [4]';
53     } catch Message::IF::DOMException with {
54     ok $_[0]->type, 'NOT_SUPPORTED_ERR', 'create_sw [4]';
55     };
56    
57     my %tree3;
58     $tree3{el1} = $doc->create_element ('el1');
59     $tree3{el2} = $doc->create_element ('el2');
60     $tree3{el3} = $doc->create_element ('el3');
61     $tree3{el4} = $doc->create_element ('el4');
62     $tree3{el5} = $doc->create_element ('el5');
63     $tree3{el1}->append_child ($tree3{el2});
64     $tree3{el1}->append_child ($tree3{el3});
65     $tree3{el3}->append_child ($tree3{el4});
66     $tree3{el1}->append_child ($tree3{el5});
67    
68     ok $doc->can ('manakai_create_serial_walker') ? 1 : 0, 1, 'can create_sw';
69    
70     ## |nextNode|
71     {
72     my $sw = $doc->manakai_create_serial_walker
73     ($tree3{el1}, 0xFFFFFFFF);
74    
75     ok $sw->can ('next_node') ? 1 : 0, 1, 'can next_node';
76    
77     for (
78     [1, 'el1', 'el1', $sw->PRE_PHASE, 0],
79     [2, 'el2', 'el2', $sw->PRE_PHASE, 0],
80     [3, 'el2', 'el2', $sw->POST_PHASE, 1],
81     [4, 'el1', 'el1', $sw->IN_PHASE, 1],
82     [5, 'el3', 'el3', $sw->PRE_PHASE, 0],
83     [6, 'el4', 'el4', $sw->PRE_PHASE, 0],
84     [7, 'el4', 'el4', $sw->POST_PHASE, 1],
85     [8, 'el3', 'el3', $sw->POST_PHASE, 1],
86     [9, 'el1', 'el1', $sw->IN_PHASE, 2],
87     [10, 'el5', 'el5', $sw->PRE_PHASE, 0],
88     [11, 'el5', 'el5', $sw->POST_PHASE, 1],
89     [12, 'el1', 'el1', $sw->POST_PHASE, 3],
90     [13, undef, 'el1', $sw->POST_PHASE, 3],
91     [14, undef, 'el1', $sw->POST_PHASE, 3],
92     ) {
93     ok $sw->next_node, $_->[1] ? $tree3{$_->[1]} : undef,
94     $_->[0] . ' next_node [0] next_node';
95     ok $sw->current_node, $tree3{$_->[2]},
96     $_->[0] . ' next_node [0] current_node';
97     ok $sw->current_phase, $_->[3],
98     $_->[0] . ' next_node [0] current_phase';
99     ok $sw->current_index, $_->[4],
100     $_->[0] . ' next_node [0] current_index';
101     }
102     }
103     {
104     my $sw = $doc->manakai_create_serial_walker ($tree3{el1}, 0xFFFFFFFF, sub {
105     $_[0]->local_name ne 'el3' ? 1 : 3; # ACCEPT : SKIP
106     });
107    
108     for (
109     [1, 'el1', 'el1', $sw->PRE_PHASE, 0],
110     [2, 'el2', 'el2', $sw->PRE_PHASE, 0],
111     [3, 'el2', 'el2', $sw->POST_PHASE, 1],
112     [4, 'el1', 'el1', $sw->IN_PHASE, 1],
113     [6, 'el4', 'el4', $sw->PRE_PHASE, 0],
114     [7, 'el4', 'el4', $sw->POST_PHASE, 1],
115     [9, 'el1', 'el1', $sw->IN_PHASE, 2],
116     [10, 'el5', 'el5', $sw->PRE_PHASE, 0],
117     [11, 'el5', 'el5', $sw->POST_PHASE, 1],
118     [12, 'el1', 'el1', $sw->POST_PHASE, 3],
119     [13, undef, 'el1', $sw->POST_PHASE, 3],
120     [14, undef, 'el1', $sw->POST_PHASE, 3],
121     ) {
122     ok $sw->next_node, $_->[1] ? $tree3{$_->[1]} : undef,
123     $_->[0] . ' next_node [1] next_node';
124     ok $sw->current_node, $tree3{$_->[2]},
125     $_->[0] . ' next_node [1] current_node';
126     ok $sw->current_phase, $_->[3],
127     $_->[0] . ' next_node [1] current_phase';
128     ok $sw->current_index, $_->[4],
129     $_->[0] . ' next_node [1] current_index';
130     }
131     }
132     {
133     my $sw = $doc->manakai_create_serial_walker ($tree3{el1}, 0xFFFFFFFF, sub {
134     $_[0]->local_name eq 'el3' ? 12101 : 1;
135     });
136    
137     for (
138     [1, 'el1', 'el1', $sw->PRE_PHASE, 0],
139     [2, 'el2', 'el2', $sw->PRE_PHASE, 0],
140     [3, 'el2', 'el2', $sw->POST_PHASE, 1],
141     [4, 'el1', 'el1', $sw->IN_PHASE, 1],
142     [3, 'el3', 'el3', $sw->PRE_PHASE, 0],
143     [8, 'el3', 'el3', $sw->POST_PHASE, 1],
144     [9, 'el1', 'el1', $sw->IN_PHASE, 2],
145     [10, 'el5', 'el5', $sw->PRE_PHASE, 0],
146     [11, 'el5', 'el5', $sw->POST_PHASE, 1],
147     [12, 'el1', 'el1', $sw->POST_PHASE, 3],
148     [13, undef, 'el1', $sw->POST_PHASE, 3],
149     [14, undef, 'el1', $sw->POST_PHASE, 3],
150     ) {
151     ok $sw->next_node, $_->[1] ? $tree3{$_->[1]} : undef,
152     $_->[0] . ' next_node [2] next_node';
153     ok $sw->current_node, $tree3{$_->[2]},
154     $_->[0] . ' next_node [2] current_node';
155     ok $sw->current_phase, $_->[3],
156     $_->[0] . ' next_node [2] current_phase';
157     ok $sw->current_index, $_->[4],
158     $_->[0] . ' next_node [2] current_index';
159     }
160     }
161     {
162     my $sw = $doc->manakai_create_serial_walker ($tree3{el1}, 0xFFFFFFFF, sub {
163     $_[0]->local_name eq 'el3' ? 2 : 1; # REJECT : ACCEPT
164     });
165    
166     for (
167     [1, 'el1', 'el1', $sw->PRE_PHASE, 0],
168     [2, 'el2', 'el2', $sw->PRE_PHASE, 0],
169     [3, 'el2', 'el2', $sw->POST_PHASE, 1],
170     [4, 'el1', 'el1', $sw->IN_PHASE, 1],
171     [10, 'el5', 'el5', $sw->PRE_PHASE, 0],
172     [11, 'el5', 'el5', $sw->POST_PHASE, 1],
173     [12, 'el1', 'el1', $sw->POST_PHASE, 2],
174     [13, undef, 'el1', $sw->POST_PHASE, 2],
175     [14, undef, 'el1', $sw->POST_PHASE, 2],
176     ) {
177     ok $sw->next_node, $_->[1] ? $tree3{$_->[1]} : undef,
178     $_->[0] . ' next_node [3] next_node';
179     ok $sw->current_node, $tree3{$_->[2]},
180     $_->[0] . ' next_node [3] current_node';
181     ok $sw->current_phase, $_->[3],
182     $_->[0] . ' next_node [3] current_phase';
183     ok $sw->current_index, $_->[4],
184     $_->[0] . ' next_node [3] current_index';
185     }
186     }
187     {
188     my $sw = $doc->manakai_create_serial_walker ($tree3{el1}, 0xFFFFFFFF, sub {
189     $_[0]->local_name eq 'el4' ? 2 : 1; # REJECT : ACCEPT
190     });
191    
192     for (
193     [1, 'el1', 'el1', $sw->PRE_PHASE, 0],
194     [2, 'el2', 'el2', $sw->PRE_PHASE, 0],
195     [3, 'el2', 'el2', $sw->POST_PHASE, 1],
196     [4, 'el1', 'el1', $sw->IN_PHASE, 1],
197     [5, 'el3', 'el3', $sw->PRE_PHASE, 0],
198     [8, 'el3', 'el3', $sw->POST_PHASE, 1],
199     [9, 'el1', 'el1', $sw->IN_PHASE, 2],
200     [10, 'el5', 'el5', $sw->PRE_PHASE, 0],
201     [11, 'el5', 'el5', $sw->POST_PHASE, 1],
202     [12, 'el1', 'el1', $sw->POST_PHASE, 3],
203     [13, undef, 'el1', $sw->POST_PHASE, 3],
204     [14, undef, 'el1', $sw->POST_PHASE, 3],
205     ) {
206     ok $sw->next_node, $_->[1] ? $tree3{$_->[1]} : undef,
207     $_->[0] . ' next_node [4] next_node';
208     ok $sw->current_node, $tree3{$_->[2]},
209     $_->[0] . ' next_node [4] current_node';
210     ok $sw->current_phase, $_->[3],
211     $_->[0] . ' next_node [4] current_phase';
212     ok $sw->current_index, $_->[4],
213     $_->[0] . ' next_node [4] current_index';
214     }
215     }
216    
217     =head1 LICENSE
218    
219     Copyright 2007 Wakaba <w@suika.fam.cx>
220    
221     This program is free software; you can redistribute it and/or
222     modify it under the same terms as Perl itself.
223    
224     =cut
225    
226     ## $Date: 2007/07/14 09:19:11 $

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24