Mercurial > pub > Impl
comparison _test/Test/DOM/Node.pm @ 194:4d0e1962161c
Replaced tabs with spaces
IMPL::Web::View - fixed document model, new features (control classes, document constructor parameters)
author | cin |
---|---|
date | Tue, 10 Apr 2012 20:08:29 +0400 |
parents | 029c9610528c |
children | 99ac2e19c0cc |
comparison
equal
deleted
inserted
replaced
193:8e8401c0aea4 | 194:4d0e1962161c |
---|---|
45 failed "document property is undef" unless $child->document; | 45 failed "document property is undef" unless $child->document; |
46 failed "document property returned incorrect value" unless $child->document == $this->Root; | 46 failed "document property returned incorrect value" unless $child->document == $this->Root; |
47 }; | 47 }; |
48 | 48 |
49 test DocumentCreateNode => sub { | 49 test DocumentCreateNode => sub { |
50 my ($this) = @_; | 50 my ($this) = @_; |
51 | 51 |
52 my $child = $this->Root->firstChild->appendNode($this->Root->Create(Info => { uuid => '77f9-9a-6d58' } )) or failed "Failed to append a child node"; | 52 my $child = $this->Root->firstChild->appendNode($this->Root->Create(Info => { uuid => '77f9-9a-6d58' } )) or failed "Failed to append a child node"; |
53 | 53 |
54 failed "document property is undef" unless $child->document; | 54 failed "document property is undef" unless $child->document; |
55 failed "document property returned incorrect value" unless $child->document == $this->Root; | 55 failed "document property returned incorrect value" unless $child->document == $this->Root; |
56 }; | 56 }; |
57 | 57 |
103 "Actual: ".scalar(@result) | 103 "Actual: ".scalar(@result) |
104 unless @result == 2; | 104 unless @result == 2; |
105 }; | 105 }; |
106 | 106 |
107 test SelectNodesPath => sub { | 107 test SelectNodesPath => sub { |
108 my ($this) = @_; | 108 my ($this) = @_; |
109 | 109 |
110 my @result = $this->Root->selectNodes('Child','Info'); | 110 my @result = $this->Root->selectNodes('Child','Info'); |
111 | 111 |
112 failed "Failed to select a node by path 'Child/Info'" unless @result; | 112 failed "Failed to select a node by path 'Child/Info'" unless @result; |
113 }; | 113 }; |
114 | 114 |
115 test SelectByAxisDescendant => sub { | 115 test SelectByAxisDescendant => sub { |
116 my ($this) = @_; | 116 my ($this) = @_; |
117 | 117 |
118 my @result = $this->Root->selectNodes( { descendant => ['GrandChild','Info']} ); | 118 my @result = $this->Root->selectNodes( { descendant => ['GrandChild','Info']} ); |
119 | 119 |
120 failed "Failed to select a node by path '//(GrandChild|Info)/'" unless @result == 2; | 120 failed "Failed to select a node by path '//(GrandChild|Info)/'" unless @result == 2; |
121 }; | 121 }; |
122 | 122 |
123 test SelectByAxisAncestor => sub { | 123 test SelectByAxisAncestor => sub { |
124 my ($this) = @_; | 124 my ($this) = @_; |
125 | 125 |
126 my @result = $this->Root->selectSingleNode( { descendant => 'Info'} )->selectNodes( { ancestor => undef } ) ; | 126 my @result = $this->Root->selectSingleNode( { descendant => 'Info'} )->selectNodes( { ancestor => undef } ) ; |
127 | 127 |
128 failed "Failed to select a node by path '//Info/ancestor:*'" unless @result == 2; | 128 failed "Failed to select a node by path '//Info/ancestor:*'" unless @result == 2; |
129 }; | 129 }; |
130 | 130 |
131 test CheckNodesValues => sub { | 131 test CheckNodesValues => sub { |
132 my ($this) = @_; | 132 my ($this) = @_; |
133 | 133 |
154 failed "property isComplex returned false for the root node" unless $this->Root->isComplex; | 154 failed "property isComplex returned false for the root node" unless $this->Root->isComplex; |
155 failed "property isComplex returned true for a simple node", $this->Root->selectSingleNode('Item')->childNodes->Count if $this->Root->selectSingleNode('Item')->isComplex; | 155 failed "property isComplex returned true for a simple node", $this->Root->selectSingleNode('Item')->childNodes->Count if $this->Root->selectSingleNode('Item')->isComplex; |
156 }; | 156 }; |
157 | 157 |
158 test setObjectProperty => sub { | 158 test setObjectProperty => sub { |
159 my ($this) = @_; | 159 my ($this) = @_; |
160 | 160 |
161 my $node = Test::DOM::TypedNode->new(nodeName => 'TestNode'); | 161 my $node = Test::DOM::TypedNode->new(nodeName => 'TestNode'); |
162 | 162 |
163 my $name = 'Vergon 6'; | 163 my $name = 'Vergon 6'; |
164 | 164 |
165 $node->nodeProperty(name => $name); | 165 $node->nodeProperty(name => $name); |
166 failed "Failed to set a property 'name'", "Expected: $name", "Got: ".$node->name unless $node->name eq $name; | 166 failed "Failed to set a property 'name'", "Expected: $name", "Got: ".$node->name unless $node->name eq $name; |
167 | 167 |
168 $name = 'entity_vergon_6'; | 168 $name = 'entity_vergon_6'; |
169 $node->systemName($name); | 169 $node->systemName($name); |
170 failed "Failed to set a property 'systemName'", "Expected: $name", "Got: ".$node->nodeProperty('systemName') unless $node->nodeProperty('systemName') eq $name; | 170 failed "Failed to set a property 'systemName'", "Expected: $name", "Got: ".$node->nodeProperty('systemName') unless $node->nodeProperty('systemName') eq $name; |
171 }; | 171 }; |
172 | 172 |
173 test setDynamicProperty => sub { | 173 test setDynamicProperty => sub { |
174 my $node = Test::DOM::TypedNode->new(nodeName => 'TestNode'); | 174 my $node = Test::DOM::TypedNode->new(nodeName => 'TestNode'); |
175 | 175 |
176 my $uuid = 'entity_76fd98b9e7a'; | 176 my $uuid = 'entity_76fd98b9e7a'; |
177 $node->nodeProperty(uuid => $uuid); | 177 $node->nodeProperty(uuid => $uuid); |
178 failed "Failed to set a dynamic property 'uuid'", "Expected: $uuid", "Got: ".$node->nodeProperty('uuid') unless $node->nodeProperty('uuid') eq $uuid; | 178 failed "Failed to set a dynamic property 'uuid'", "Expected: $uuid", "Got: ".$node->nodeProperty('uuid') unless $node->nodeProperty('uuid') eq $uuid; |
179 }; | 179 }; |
180 | 180 |
181 test setPrivateProperty => sub { | 181 test setPrivateProperty => sub { |
182 my $node = Test::DOM::TypedNode->new(nodeName => 'TestNode'); | 182 my $node = Test::DOM::TypedNode->new(nodeName => 'TestNode'); |
183 | 183 |
184 eval { | 184 eval { |
185 $node->nodeProperty(_private => 'failed'); | 185 $node->nodeProperty(_private => 'failed'); |
186 1; | 186 1; |
187 } and failed "Setting a private property successfull"; | 187 } and failed "Setting a private property successfull"; |
188 }; | 188 }; |
189 | 189 |
190 test createNodeWithProps => sub { | 190 test createNodeWithProps => sub { |
191 my $uuid = 'entity_76fd98b9e7a'; | 191 my $uuid = 'entity_76fd98b9e7a'; |
192 my $name = 'Vergon 6'; | 192 my $name = 'Vergon 6'; |
193 my $systemName = 'entity_vergon_6'; | 193 my $systemName = 'entity_vergon_6'; |
194 | 194 |
195 my $node = Test::DOM::TypedNode->new( | 195 my $node = Test::DOM::TypedNode->new( |
196 nodeName => 'TestNode', | 196 nodeName => 'TestNode', |
197 uuid => $uuid, | 197 uuid => $uuid, |
198 name => $name, | 198 name => $name, |
199 systemName => $systemName | 199 systemName => $systemName |
200 ); | 200 ); |
201 | 201 |
202 failed "Failed to get dynamic property 'uuid'" unless $node->nodeProperty('uuid') eq $uuid; | 202 failed "Failed to get dynamic property 'uuid'" unless $node->nodeProperty('uuid') eq $uuid; |
203 failed "Failed to get property 'name' through nodeProperty method" unless $node->nodeProperty('name') eq $name; | 203 failed "Failed to get property 'name' through nodeProperty method" unless $node->nodeProperty('name') eq $name; |
204 failed "Failed to get property name directly" unless $node->name eq $name; | 204 failed "Failed to get property name directly" unless $node->name eq $name; |
205 }; | 205 }; |
206 | 206 |
207 test listNodePredefinedProps => sub { | 207 test listNodePredefinedProps => sub { |
208 my $node = Test::DOM::TypedNode->new(nodeName => 'TestNode'); | 208 my $node = Test::DOM::TypedNode->new(nodeName => 'TestNode'); |
209 | 209 |
210 my @props = $node->listProperties; | 210 my @props = $node->listProperties; |
211 my @expected = qw(name _private); | 211 my @expected = qw(name _private); |
212 | 212 |
213 failed "Got wrong list of props", @props unless cmparray(\@props,\@expected); | 213 failed "Got wrong list of props", @props unless cmparray(\@props,\@expected); |
214 }; | 214 }; |
215 | 215 |
216 test listNodeAllProps => sub { | 216 test listNodeAllProps => sub { |
217 my $node = Test::DOM::TypedNode->new( | 217 my $node = Test::DOM::TypedNode->new( |
218 nodeName => 'TestNode', | 218 nodeName => 'TestNode', |
219 uuid => 'ade58f98b', # dynamic | 219 uuid => 'ade58f98b', # dynamic |
220 name => 'noname', # predefined | 220 name => 'noname', # predefined |
221 systemName => 'no sys' # not visible to DOM | 221 systemName => 'no sys' # not visible to DOM |
222 ); | 222 ); |
223 | 223 |
224 my @props = $node->listProperties; | 224 my @props = $node->listProperties; |
225 my @expected = qw(name _private uuid); # systemName is not a DOM prop | 225 my @expected = qw(name _private uuid); # systemName is not a DOM prop |
226 | 226 |
227 failed "Got wrong list of props", @props unless cmparray(\@props,\@expected); | 227 failed "Got wrong list of props", @props unless cmparray(\@props,\@expected); |
228 }; | 228 }; |
229 | 229 |
230 test MemoryLeaks => sub { | 230 test MemoryLeaks => sub { |
231 my $doc = new IMPL::DOM::Document(nodeName => 'Root'); | 231 my $doc = new IMPL::DOM::Document(nodeName => 'Root'); |
232 weaken($doc); | 232 weaken($doc); |
233 | 233 |
234 assert(not defined $doc); | 234 assert(not defined $doc); |
235 }; | 235 }; |
236 | 236 |
237 package Test::DOM::TypedNode; | 237 package Test::DOM::TypedNode; |
238 use parent qw(IMPL::DOM::Node); | 238 use parent qw(IMPL::DOM::Node); |
239 use IMPL::Class::Property; | 239 use IMPL::Class::Property; |
240 use IMPL::DOM::Property qw(_dom); | 240 use IMPL::DOM::Property qw(_dom); |
241 | 241 |
242 __PACKAGE__->PassThroughArgs; | 242 __PACKAGE__->PassThroughArgs; |
243 | 243 |
244 BEGIN { | 244 BEGIN { |
245 public _dom property name => prop_all; | 245 public _dom property name => prop_all; |
246 public property systemName => prop_all; | 246 public property systemName => prop_all; |
247 private _dom property _private => prop_all; | 247 private _dom property _private => prop_all; |
248 } | 248 } |
249 | 249 |
250 | 250 |
251 1; | 251 1; |