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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (show annotations) (download) (as text)
Sat Jul 7 11:11:34 2007 UTC (17 years, 4 months ago) by wakaba
Branch: MAIN
Changes since 1.1: +67 -3 lines
File MIME type: application/x-troff
++ manakai/t/ChangeLog	7 Jul 2007 11:11:27 -0000
	* DOM-Element.t: New tests for |create_element|
	and |create_element_ns| are added.

	* DOM-EntityReference.t: New tests for |create_entity_reference|
	are added.

	* DOM-Node.t: Test data for |is_element_content_whitespace|
	are added.

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

++ manakai/lib/Message/DOM/ChangeLog	7 Jul 2007 11:10:33 -0000
	* CDATASection.pm (is_element_content_whitespace): New.

	* DOMElement.pm (has_attribute): Alpha version.
	(create_element, create_element_ns): Implemented.

	* DocumentType.pm (get_general_entity_node): Alpha version.

	* EntityReference.pm (create_entity_reference): Implemented.

	* ProcessingInstruction.pm (create_processing_instruction): Implemented.

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

1 #!/usr/bin/perl
2 use strict;
3 use Test;
4 BEGIN { plan tests => 52 }
5
6 require Message::DOM::DOMImplementation;
7 use Message::Util::Error;
8
9 my $dom = Message::DOM::DOMImplementation->____new;
10
11 {
12 my $doc = $dom->create_document;
13 my $el = $doc->create_element ('et1');
14
15 ok 0+@{$el->attributes}, 0, 'create_element->attributes @{} 0+ [0]';
16
17 my $dt = $doc->create_document_type_definition ('dt');
18 my $et = $doc->create_element_type_definition ('et1');
19 my $at = $doc->create_attribute_definition ('dattr1');
20 $at->default_type ($at->EXPLICIT_DEFAULT);
21 $at->text_content ('dattr1 default ');
22 $et->set_attribute_definition_node ($at);
23 $dt->set_element_type_definition_node ($et);
24 $doc->append_child ($dt);
25 my $el2 = $doc->create_element ('et1');
26
27 ok 0+@{$el2->attributes}, 1, 'create_element->attributes @{} 0+ [1]';
28
29 ok $el2->has_attribute ('dattr1') ? 1 : 0, 1, 'create_element->has_attr [1]';
30
31 my $an = $el2->get_attribute_node ('dattr1');
32 ok UNIVERSAL::isa ($an, 'Message::IF::Attr') ? 1 : 0, 1, 'ce->def if [1]';
33 ok $an->text_content, 'dattr1 default ', 'ce->def tx [1]';
34 ok $an->specified ? 1 : 0, 0, 'ce->def specified [1]';
35
36 $doc->dom_config->set_parameter
37 (q<http://suika.fam.cx/www/2006/dom-config/dtd-default-attribute> => 0);
38
39 my $el3 = $doc->create_element ('et1');
40 ok 0+@{$el3->attributes}, 0, 'create_element->attributes @{} 0+ [2]';
41 }
42
43 {
44 my $doc = $dom->create_document;
45 my $el = $doc->create_element_ns (undef, 'et1');
46
47 ok 0+@{$el->attributes}, 0, 'create_element->attributes @{} 0+ [0]';
48
49 my $dt = $doc->create_document_type_definition ('dt');
50 my $et = $doc->create_element_type_definition ('et1');
51 my $at = $doc->create_attribute_definition ('dattr1');
52 $at->default_type ($at->EXPLICIT_DEFAULT);
53 $at->text_content ('dattr1 default ');
54 $et->set_attribute_definition_node ($at);
55 $dt->set_element_type_definition_node ($et);
56 $doc->append_child ($dt);
57 my $el2 = $doc->create_element ('et1');
58
59 ok 0+@{$el2->attributes}, 1, 'create_element->attributes @{} 0+ [1]';
60
61 ok $el2->has_attribute ('dattr1') ? 1 : 0, 1, 'create_element->has_attr [1]';
62
63 my $an = $el2->get_attribute_node ('dattr1');
64 ok UNIVERSAL::isa ($an, 'Message::IF::Attr') ? 1 : 0, 1, 'ce->def if [1]';
65 ok $an->text_content, 'dattr1 default ', 'ce->def tx [1]';
66 ok $an->specified ? 1 : 0, 0, 'ce->def specified [1]';
67
68 $doc->dom_config->set_parameter
69 (q<http://suika.fam.cx/www/2006/dom-config/dtd-default-attribute> => 0);
70
71 my $el3 = $doc->create_element ('et1');
72 ok 0+@{$el3->attributes}, 0, 'create_element->attributes @{} 0+ [2]';
73 }
74
75 my $doc = $dom->create_document;
76 my $el = $doc->create_element ('element');
77
78 for my $prop (qw/manakai_base_uri/) {
79 ok $el->can ($prop) ? 1 : 0, 1, 'can ' . $prop;
80
81 for ('http://absuri.test/', 'reluri', 0, '') {
82 $el->$prop ($_);
83 ok $el->$prop, $_, $prop . $_;
84 }
85
86 $el->$prop (undef);
87 ok $el->$prop, undef, $prop . ' undef';
88 }
89
90 for my $method (qw/set_attribute_node set_attribute_node_ns/) {
91 my $el = $doc->create_element ('element');
92 ok $el->can ($method) ? 1 : 0, 1, "can $method";
93
94 my $a1 = $doc->create_attribute ('attr1');
95 $a1->value ('value1');
96 $a1->specified (0);
97
98 my $r1 = $el->$method ($a1);
99 ok $r1, undef, "$method return [1]";
100 ok $el->get_attribute ('attr1'), 'value1', "$method get_attribute [1]";
101 ok $el->get_attribute_ns (undef, 'attr1'), 'value1',
102 "$method get_attribute_ns [1]";
103 ok $el->get_attribute_node ('attr1'), $a1, "$method get_attribute_node [1]";
104 ok $el->get_attribute_node_ns (undef, 'attr1'), $a1,
105 "$method get_attribute_node_ns [1]";
106 ok $a1->owner_element, $el, "$method owner_element [1]";
107 ok $a1->specified ? 1 : 0, 1, "$method specified [1]";
108 $a1->specified (0);
109
110 my $a2 = $doc->create_attribute ('attr1');
111 my $r3 = $el->$method ($a2);
112 ok $r3, $a1, "$method return [2]";
113 ok $a1->owner_element, undef, "$method owner_element [2]";
114 ok $a1->specified ? 1 : 0, 1, "$method specified [2]";
115
116 $el->set_attribute_ns (undef, attr => 'value');
117 my $attr = $el->get_attribute_node_ns (undef, 'attr');
118 $attr->specified (0);
119 my $r4 = $el->$method ($attr);
120 ok $r4, undef, "$method return [3]";
121 ok $attr->owner_element, $el, "$method owner_element [3]";
122 ok $attr->specified ? 1 : 0, 0, "$method specified [3]";
123 ok $el->get_attribute_node_ns (undef, 'attr'), $attr,
124 "$method get_attribute_node_ns [3]";
125 ok $el->get_attribute_ns (undef, 'attr'), 'value',
126 "$method get_attribute_ns [3]";
127 }
128
129 =head1 LICENSE
130
131 Copyright 2007 Wakaba <w@suika.fam.cx>
132
133 This program is free software; you can redistribute it and/or
134 modify it under the same terms as Perl itself.
135
136 =cut
137
138 ## $Date: 2007/06/17 13:37:42 $

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24