Mercurial > pub > Impl
comparison _test/Test/DOM/Node.pm @ 18:818c74b038ae
DOM Schema + tests
author | Sergey |
---|---|
date | Thu, 10 Sep 2009 17:42:47 +0400 |
parents | 65a7bb156fb7 |
children | 7f00786f8210 |
comparison
equal
deleted
inserted
replaced
17:7f88e01b58f8 | 18:818c74b038ae |
---|---|
1 package Test::DOM::Node; | 1 package Test::DOM::Node; |
2 use strict; | 2 use strict; |
3 use warnings; | 3 use warnings; |
4 | 4 |
5 use base qw(IMPL::Test::Unit); | 5 use base qw(IMPL::Test::Unit); |
6 use IMPL::Test qw(test shared failed); | 6 use IMPL::Test qw(test shared failed cmparray); |
7 use IMPL::Class::Property; | 7 use IMPL::Class::Property; |
8 | 8 |
9 require IMPL::DOM::Node; | 9 require IMPL::DOM::Node; |
10 | 10 |
11 __PACKAGE__->PassThroughArgs; | 11 __PACKAGE__->PassThroughArgs; |
18 my ($this) = @_; | 18 my ($this) = @_; |
19 | 19 |
20 $this->Root(new IMPL::DOM::Node(nodeName => 'Root')) or failed "Failed to create a node"; | 20 $this->Root(new IMPL::DOM::Node(nodeName => 'Root')) or failed "Failed to create a node"; |
21 }; | 21 }; |
22 | 22 |
23 test InsertNode => sub { | |
24 my ($this) = @_; | |
25 my $child = $this->Root->insertNode(new IMPL::DOM::Node(nodeName => 'Child')) or failed "Failed to insert a child node"; | |
26 failed "fiestChild returned incorrect results" unless ($this->Root->firstChild || 0) == $child; | |
27 }; | |
28 | |
23 test AppendNode => sub { | 29 test AppendNode => sub { |
24 my ($this) = @_; | 30 my ($this) = @_; |
25 | 31 |
26 my $child = $this->Root->appendNode(new IMPL::DOM::Node(nodeName => 'Child')) or failed "Failed to append a child node"; | 32 my $child = $this->Root->appendNode(new IMPL::DOM::Node(nodeName => 'Child')) or failed "Failed to append a child node"; |
27 | 33 |
28 my $firstChild = $this->Root->firstChild; | 34 my $lastChild = $this->Root->removeLast; |
29 | 35 |
30 failed "firstChild returned incorrect results" unless $firstChild == $child; | 36 failed "removeLast returned incorrect results" unless $lastChild == $child; |
37 }; | |
38 | |
39 test GetRootNode => sub { | |
40 my ($this) = @_; | |
41 | |
42 my $child = $this->Root->firstChild->appendNode(new IMPL::DOM::Node(nodeName => 'GrandChild')) or failed "Failed to append a child node"; | |
43 | |
44 failed "rootNode is undef" unless $child->rootNode; | |
45 failed "rootNode returned incorrect value" unless $child->rootNode == $this->Root; | |
46 }; | |
47 | |
48 test MoveNode => sub { | |
49 my ($this) = @_; | |
50 | |
51 my $grandChild = $this->Root->firstChild->firstChild; | |
52 $this->Root->appendNode($grandChild); | |
53 | |
54 failed "incorrect new parentNode value" unless ($grandChild->parentNode || 0) == $this->Root; | |
55 failed "incorrect new rootNode value" unless ($grandChild->rootNode || 0) == $this->Root; | |
56 }; | |
57 | |
58 test AppendRange => sub { | |
59 my ($this) = @_; | |
60 | |
61 my $count = $this->Root->childNodes->Count; | |
62 | |
63 $this->Root->appendRange( | |
64 map IMPL::DOM::Node->new(nodeName => "Item", nodeValue => $_),1..10 | |
65 ); | |
66 | |
67 failed | |
68 "Wrong number of a child nodes", | |
69 "Expected: ".($count+10), | |
70 "Actual: ".$this->Root->childNodes->Count | |
71 unless $count + 10 == $this->Root->childNodes->Count; | |
72 }; | |
73 | |
74 test SelectNodes => sub { | |
75 my ($this) = @_; | |
76 | |
77 my @result = $this->Root->selectNodes("Item"); | |
78 | |
79 failed | |
80 "Wrong number of a selected nodes", | |
81 "Expected: 10", | |
82 "Actual: ".scalar(@result) | |
83 unless @result == 10; | |
84 }; | |
85 | |
86 test SelectNodesByQuery => sub { | |
87 my ($this) = @_; | |
88 | |
89 my @result = $this->Root->selectNodes(sub { $_[0]->nodeName =~ /child/i } ); | |
90 failed | |
91 "Wrong number of a selected nodes", | |
92 "Expected: 2", | |
93 "Actual: ".scalar(@result) | |
94 unless @result == 2; | |
95 }; | |
96 | |
97 test CheckNodesValues => sub { | |
98 my ($this) = @_; | |
99 | |
100 my @expected = (1..10); | |
101 | |
102 my @result = map $_->nodeValue, grep $_->nodeValue, $this->Root->selectNodes("Item"); | |
103 | |
104 failed | |
105 "Some nodes returned wrong node values or in a wrong order", | |
106 "Expected: ".join(', ',@expected), | |
107 "Recieved: ".join(', ',@result) | |
108 unless cmparray(\@expected,\@result); | |
109 | |
110 failed | |
111 "a text property of a root node returned a wrong value", | |
112 "Expected: @expected", | |
113 "Recieved: ". $this->Root->text | |
114 unless $this->Root->text eq join '',@expected; | |
115 }; | |
116 | |
117 test isComplex => sub { | |
118 my ($this) = @_; | |
119 | |
120 failed "property isComplex returned false for the root node" unless $this->Root->isComplex; | |
121 failed "property isComplex returned true for a simple node", $this->Root->firstChild->nodeName if $this->Root->firstChild->isComplex; | |
31 }; | 122 }; |
32 | 123 |
33 1; | 124 1; |