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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (show annotations) (download) (as text)
Sun Jul 29 03:49:00 2007 UTC (17 years, 4 months ago) by wakaba
Branch: MAIN
CVS Tags: manakai-release-0-4-0, HEAD
Changes since 1.1: +168 -3 lines
File MIME type: application/x-troff
++ manakai/t/ChangeLog	19 Jul 2007 15:16:15 -0000
2007-07-19  Wakaba  <wakaba@suika.fam.cx>

	* DOM-Attr.t: New tests for |DeclaredValueType|, |specified|,
	|schemaTypeInfo|, and |isId| are added.

	* DOM-Element.t: New tests for |schemaTypeInfo| are added.

	* DOM-Entity.t: New tests for |xmlVersion| are added.

	* DOM-ProcessingInstruction.t: New tests for |node_value|,
	|data|, and |text_content| are added.

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

	* Attr.pm (DeclaredValueType): Added.

	* ProcessingInstruction.pm (data): Accept |undef|
	as a valid input, for |text_content| (maybe) allows it.

	* TypeInfo.pm (type_namespace): The implementation was wrong.

1 #!/usr/bin/perl
2 use strict;
3 use Test;
4 BEGIN { plan tests => 142 }
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 my $ent = $doc->create_attribute ('attr');
13
14 ## Constants
15 my $constants = [
16 [NO_TYPE_ATTR => 0],
17 [CDATA_ATTR => 1],
18 [ID_ATTR => 2],
19 [IDREF_ATTR => 3],
20 [IDREFS_ATTR => 4],
21 [ENTITY_ATTR => 5],
22 [ENTITIES_ATTR => 6],
23 [NMTOKEN_ATTR => 7],
24 [NMTOKENS_ATTR => 8],
25 [NOTATION_ATTR => 9],
26 [ENUMERATION_ATTR => 10],
27 [UNKNOWN_ATTR => 11],
28 ];
29 for (@$constants) {
30 my $const_name = $_->[0];
31 ok $ent->can ($const_name) ? 1 : 0, 1, "can ($const_name)";
32 ok $ent->$const_name, $_->[1], $const_name;
33 }
34
35 ## |specified|
36 {
37 my $prop = 'specified';
38 ok $ent->can ($prop) ? 1 : 0, 1, 'can ' . $prop;
39 ok $ent->$prop ? 1 : 0, 1, $prop . ' test is valid?';
40
41 for (0, 1, '') {
42 $ent->$prop ($_);
43 ok $ent->$prop ? 1 : 0, 1, $prop . ' ' . $_;
44 }
45
46 $ent->$prop (undef);
47 ok $ent->$prop ? 1 : 0, 1, $prop . ' undef';
48
49 my $el = $doc->create_element ('element');
50 $el->set_attribute_node ($ent); # set owner_element
51 ok $ent->$prop ? 1 : 0, 1, $prop . ' test is valid? (has owner_element)';
52
53 for (0, 1, '') {
54 $ent->$prop ($_);
55 ok $ent->$prop ? 1 : 0, $_ ? 1 : 0, $prop . ' (has owner_element) ' . $_;
56 }
57
58 $ent->$prop (undef);
59 ok $ent->$prop ? 1 : 0, 0, $prop . ' (has owner_element) undef';
60 }
61
62 {
63 my $attr = $doc->create_attribute_ns (undef, 'at1');
64 my $el = $doc->create_element_ns (undef, 'el');
65 $el->set_attribute_node_ns ($attr);
66 ok $attr->specified ? 1 : 0, 1, 'specified [1]';
67 $attr->specified (0);
68 ok $attr->specified ? 1 : 0, 0, 'specified [2]';
69 $attr->specified (1);
70 ok $attr->specified ? 1 : 0, 1, 'specified [3]';
71 $attr->specified (0);
72 $el->remove_attribute_node ($attr);
73 ok $attr->specified ? 1 : 0, 1, 'specified [4]';
74 }
75
76 {
77 my $attr = $doc->create_attribute_ns (undef, 'at1');
78 my $el = $doc->create_element_ns (undef, 'el');
79 $el->set_attribute_node_ns ($attr);
80 $attr->specified (0);
81 my $attr2 = $doc->create_attribute_ns (undef, 'at1');
82 $el->set_attribute_node_ns ($attr2);
83 ok $attr->specified ? 1 : 0, 1, 'specified [5]';
84 }
85
86 for my $prop (qw/manakai_attribute_type/) {
87 ok $ent->can ($prop) ? 1 : 0, 1, 'can ' . $prop;
88 local $^W = 0;
89
90 for (-3..10, 'abc', '') {
91 $ent->$prop ($_);
92 ok $ent->$prop, 0+$_, $prop . $_;
93 }
94
95 $ent->$prop (undef);
96 ok $ent->$prop, 0, $prop . ' undef';
97 }
98
99 ## |schemaTypeInfo|
100 {
101 my $el = $doc->create_element ('el');
102 $el->owner_document->dom_config->set_parameter
103 ('schema-type' => undef);
104 $el->set_attribute_ns (undef, 'a', 'b');
105 my $attr = $el->get_attribute_node_ns (undef, 'a');
106 my $sti = $attr->schema_type_info;
107 ok UNIVERSAL::isa ($sti, 'Message::IF::TypeInfo') ? 1 : 0, 1, 'sti if [1]';
108 ok $sti->type_name, undef, 'sti type_name [1]';
109 ok $sti->type_namespace, undef, 'sti type_namespace [1]';
110 }
111
112 {
113 my $el = $doc->create_element ('el');
114 $el->owner_document->dom_config->set_parameter
115 ('schema-type' => q<http://www.w3.org/TR/REC-xml>);
116 $el->set_attribute_ns (undef, 'a', 'b');
117 my $attr = $el->get_attribute_node_ns (undef, 'a');
118 my $sti = $attr->schema_type_info;
119 ok UNIVERSAL::isa ($sti, 'Message::IF::TypeInfo') ? 1 : 0, 1, 'sti if [2]';
120 ok $sti->type_name, undef, 'sti type_name [2]';
121 ok $sti->type_namespace, undef, 'sti type_namespace [2]';
122 }
123
124 {
125 my $el = $doc->create_element ('el');
126 $el->owner_document->dom_config->set_parameter
127 ('schema-type' => q<http://www.w3.org/TR/REC-xml>);
128 $el->set_attribute_ns (undef, 'a', 'b');
129 my $attr = $el->get_attribute_node_ns (undef, 'a');
130 for (
131 [$attr->CDATA_ATTR, 'CDATA'],
132 [$attr->ID_ATTR, 'ID'],
133 [$attr->IDREF_ATTR, 'IDREF'],
134 [$attr->IDREFS_ATTR, 'IDREFS'],
135 [$attr->ENTITY_ATTR, 'ENTITY'],
136 [$attr->ENTITIES_ATTR, 'ENTITIES'],
137 [$attr->NOTATION_ATTR, 'NOTATION'],
138 [$attr->ENUMERATION_ATTR, 'ENUMERATION'],
139 [$attr->NMTOKEN_ATTR, 'NMTOKEN'],
140 [$attr->NMTOKENS_ATTR, 'NMTOKENS'],
141 ) {
142 $attr->manakai_attribute_type ($_->[0]);
143 my $sti = $attr->schema_type_info;
144 ok UNIVERSAL::isa ($sti, 'Message::IF::TypeInfo') ? 1 : 0, 1,
145 'sti if '.$_->[1].' [3]';
146 ok $sti->type_name, $_->[1], 'sti type_name '.$_->[1].' [3]';
147 ok $sti->type_namespace, q<http://www.w3.org/TR/REC-xml>,
148 'sti type_namespace '.$_->[1].' [3]';
149 }
150
151 for (
152 [$attr->NO_TYPE_ATTR, 'NO_VALUE'],
153 [$attr->UNKNOWN_ATTR, 'UNKNOWN'],
154 ) {
155 $attr->manakai_attribute_type ($_->[0]);
156 my $sti = $attr->schema_type_info;
157 ok UNIVERSAL::isa ($sti, 'Message::IF::TypeInfo') ? 1 : 0, 1,
158 'sti if '.$_->[1].' [3]';
159 ok $sti->type_name, undef, 'sti type_name '.$_->[1].' [3]';
160 ok $sti->type_namespace, undef, 'sti type_namespace '.$_->[1].' [3]';
161 }
162 }
163
164 ## |isId|
165 {
166 my $attr = $doc->create_attribute ('a');
167 $attr->manakai_attribute_type ($attr->ID_ATTR);
168 ok $attr->is_id ? 1 : 0, 1, 'is_id [1]';
169 $attr->is_id (1);
170 ok $attr->is_id ? 1 : 0, 1, 'is_id [2]';
171 $attr->is_id (0);
172 ok $attr->is_id ? 1 : 0, 1, 'is_id [3]';
173 }
174
175 {
176 my $attr = $doc->create_attribute ('a');
177 for (
178 $attr->CDATA_ATTR,
179 $attr->IDREF_ATTR,
180 $attr->IDREFS_ATTR,
181 $attr->ENTITY_ATTR,
182 $attr->ENTITIES_ATTR,
183 $attr->NOTATION_ATTR,
184 $attr->ENUMERATION_ATTR,
185 $attr->NMTOKEN_ATTR,
186 $attr->NMTOKENS_ATTR,
187 $attr->NO_TYPE_ATTR,
188 $attr->UNKNOWN_ATTR,
189 ) {
190 $attr->manakai_attribute_type ($_);
191 ok $attr->is_id ? 1 : 0, 0, 'is_id '.$_.' [1]';
192 $attr->is_id (1);
193 ok $attr->is_id ? 1 : 0, 1, 'is_id '.$_.' [2]';
194 $attr->is_id (0);
195 ok $attr->is_id ? 1 : 0, 0, 'is_id '.$_.' [3]';
196 }
197 }
198
199 {
200 my $attr = $doc->create_attribute ('xml:id');
201 ok $attr->is_id ? 1 : 0, 1, 'is_id xml:id [1]';
202 $attr->is_id (0);
203 ok $attr->is_id ? 1 : 0, 1, 'is_id xml:id [2]';
204 $attr->is_id (1);
205 ok $attr->is_id ? 1 : 0, 1, 'is_id xml:id [3]';
206 }
207
208 {
209 my $attr = $doc->create_attribute_ns
210 (q<http://www.w3.org/XML/1998/namespace>, 'xml:id');
211 ok $attr->is_id ? 1 : 0, 1, 'is_id xml:id [4]';
212 $attr->is_id (0);
213 ok $attr->is_id ? 1 : 0, 1, 'is_id xml:id [5]';
214 $attr->is_id (1);
215 ok $attr->is_id ? 1 : 0, 1, 'is_id xml:id [6]';
216 }
217
218 =head1 LICENSE
219
220 Copyright 2007 Wakaba <w@suika.fam.cx>
221
222 This program is free software; you can redistribute it and/or
223 modify it under the same terms as Perl itself.
224
225 =cut
226
227 ## $Date: 2007/06/17 13:37:42 $

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24