Mercurial > pub > Impl
diff _test/Test/DOM/Navigator.pm @ 49:16ada169ca75
migrating to the Eclipse IDE
author | wizard@linux-odin.local |
---|---|
date | Fri, 26 Feb 2010 10:49:21 +0300 |
parents | 1828103371d0 |
children | 4267a2ac3d46 |
line wrap: on
line diff
--- a/_test/Test/DOM/Navigator.pm Fri Feb 26 01:43:42 2010 +0300 +++ b/_test/Test/DOM/Navigator.pm Fri Feb 26 10:49:21 2010 +0300 @@ -1,161 +1,161 @@ -package Test::DOM::Navigator; -use base qw(IMPL::Test::Unit); - -__PACKAGE__->PassThroughArgs; - -use IMPL::Test qw(test failed); -use IMPL::DOM::Navigator; -use IMPL::DOM::Navigator::SchemaNavigator; -use IMPL::DOM::Node; -use IMPL::DOM::Schema; -use IMPL::Class::Property; - -BEGIN { - public property doc => prop_all; -} - -sub CTOR { - my ($this) = @_; - - $this->doc( - IMPL::DOM::Node->new(nodeName => 'root')->appendRange( - IMPL::DOM::Node->new(nodeName=> 'age', nodeValue => 21), - IMPL::DOM::Node->new(nodeName=> 'address')->appendRange( - IMPL::DOM::Node->new(nodeName=>'city', nodeValue=>'moscow'), - IMPL::DOM::Node->new(nodeName=>'street', nodeValue=>'main'), - IMPL::DOM::Node->new(nodeName=>'phone',nodeValue=>'123-456'), - ), - IMPL::DOM::Node->new(nodeName=> 'address')->appendRange( - IMPL::DOM::Node->new(nodeName=>'city', nodeValue=>'San Francisco'), - IMPL::DOM::Node->new(nodeName=>'street', nodeValue=>'Libertador'), - ), - IMPL::DOM::Node->new(nodeName=> 'contacts')->appendRange( - IMPL::DOM::Node->new(nodeName=>'phone',nodeValue=>'123-123'), - IMPL::DOM::Node->new(nodeName=>'phone',nodeValue=>'1-233-434-34-54'), - IMPL::DOM::Node->new(nodeName=>'email',nodeValue=>'some@mail.none') - ) - - ) - ); -} - -test Creation => sub { - my ($this) = @_; - - my $doc = new IMPL::DOM::Node(nodeName => 'root'); - - my $obj = new IMPL::DOM::Navigator($doc) or failed "Failed to create instance" ; -}; - -test Navigate => sub { - my $doc = new IMPL::DOM::Node(nodeName => 'root'); - my $child = $doc->insertNode( - new IMPL::DOM::Node( - nodeName => 'Child' - ) - ); - - my $navi = new IMPL::DOM::Navigator($doc); - my $navresult = $navi->Navigate("Child"); - - failed ("Navigate retuned unexpected result", "Recieved: $navresult", "Expected: $child") if $child != $navresult; - my $curr = $navi->Current; - failed ("Current node has a wrong value","Current: $curr","Expected: $child") if $child != $curr; -}; - -test PathToString => sub { - my $doc = new IMPL::DOM::Node(nodeName => 'root'); - my $child = $doc->insertNode( - new IMPL::DOM::Node( - nodeName => 'Child' - ) - ); - - my $navi = new IMPL::DOM::Navigator($doc); - $navi->Navigate("Child"); - - my $expected = "root/Child"; - my $res = $navi->PathToString; - failed("Unexpected PathToString result","Recieved: $res","Expected: $expected") if $res ne $expected; -}; - -test Back => sub { - my $doc = new IMPL::DOM::Node(nodeName => 'root'); - my $child = $doc->insertNode( - new IMPL::DOM::Node( - nodeName => 'Child' - ) - ); - - my $navi = new IMPL::DOM::Navigator($doc); - $navi->Navigate("Child"); - my $navresult = $navi->Back; - - failed ("Back() retuned unexpected result", "Recieved: $navresult", "Expected: $doc") if $doc != $navresult; - my $curr = $navi->Current; - failed ("Current node has a wrong value","Current: $curr","Expected: $doc") if $doc != $curr; -}; - -test selectNodes1 => sub { - my ($this) = @_; - - my $navi = new IMPL::DOM::Navigator($this->doc); - my @result = $navi->selectNodes('contacts','phone'); - failed "Expected to get two entries, but got:",map($_->nodeName,@result) unless @result == 2; -}; - -test selectNodes2 => sub { - my ($this) = @_; - - my $navi = new IMPL::DOM::Navigator($this->doc); - my @result = $navi->selectNodes(undef,'phone'); - failed "Expected to get three entries, but got:",map($_->nodeName,@result) unless @result == 3; -}; - -test FetchDoeachState => sub { - my ($this) = @_; - - my $navi = new IMPL::DOM::Navigator($this->doc); - - $navi->Navigate(undef,'phone'); - - $navi->saveState(); - - my @result; - doeach $navi sub { - push @result,$_; - }; - - failed "Expected to get three nodes, but got: ", map($_->nodeName,@result) unless @result == 3; - - $navi->restoreState(); - @result = (); - - push @result, $_ while fetch $navi; - - failed "Expected to get three nodes, but got: ", map($_->nodeName,@result) unless @result == 3; -}; - -test NavigateSchema => sub { - my $navi = new IMPL::DOM::Navigator::SchemaNavigator(IMPL::DOM::Schema->MetaSchema); - - my $root = $navi->NavigateName('schema') or failed "Failed to navigate to the root element"; - - $navi->saveState; - $navi->NavigateName('Node') or failed "Failed to navigate to a simple node"; - $navi->restoreState; - - failed "Can't navigate from simple node" if $navi->dosafe(sub { $navi->NavigateName('Property') || die } ); - - $navi->NavigateName('ComplexType') or failed "Failed to navigate to a complex node"; - $navi->NavigateName('NodeSet') or failed "Failed to navigate to NodeSet"; - $navi->SchemaBack(); - $navi->NavigateName('NodeList') or failed "Failed to navigate to NodeList"; - $navi->NavigateName('SimpleNode') or failed "Failed to navigate to SimpleNode"; - $navi->NavigateName('Enum') or failed "Failed to navigate to Enum"; - $navi->NavigateName('Item') or failed "Failed to navigate to Item"; - -}; - - -1; +package Test::DOM::Navigator; +use base qw(IMPL::Test::Unit); + +__PACKAGE__->PassThroughArgs; + +use IMPL::Test qw(test failed); +use IMPL::DOM::Navigator; +use IMPL::DOM::Navigator::SchemaNavigator; +use IMPL::DOM::Node; +use IMPL::DOM::Schema; +use IMPL::Class::Property; + +BEGIN { + public property doc => prop_all; +} + +sub CTOR { + my ($this) = @_; + + $this->doc( + IMPL::DOM::Node->new(nodeName => 'root')->appendRange( + IMPL::DOM::Node->new(nodeName=> 'age', nodeValue => 21), + IMPL::DOM::Node->new(nodeName=> 'address')->appendRange( + IMPL::DOM::Node->new(nodeName=>'city', nodeValue=>'moscow'), + IMPL::DOM::Node->new(nodeName=>'street', nodeValue=>'main'), + IMPL::DOM::Node->new(nodeName=>'phone',nodeValue=>'123-456'), + ), + IMPL::DOM::Node->new(nodeName=> 'address')->appendRange( + IMPL::DOM::Node->new(nodeName=>'city', nodeValue=>'San Francisco'), + IMPL::DOM::Node->new(nodeName=>'street', nodeValue=>'Libertador'), + ), + IMPL::DOM::Node->new(nodeName=> 'contacts')->appendRange( + IMPL::DOM::Node->new(nodeName=>'phone',nodeValue=>'123-123'), + IMPL::DOM::Node->new(nodeName=>'phone',nodeValue=>'1-233-434-34-54'), + IMPL::DOM::Node->new(nodeName=>'email',nodeValue=>'some@mail.none') + ) + + ) + ); +} + +test Creation => sub { + my ($this) = @_; + + my $doc = new IMPL::DOM::Node(nodeName => 'root'); + + my $obj = new IMPL::DOM::Navigator($doc) or failed "Failed to create instance" ; +}; + +test Navigate => sub { + my $doc = new IMPL::DOM::Node(nodeName => 'root'); + my $child = $doc->insertNode( + new IMPL::DOM::Node( + nodeName => 'Child' + ) + ); + + my $navi = new IMPL::DOM::Navigator($doc); + my $navresult = $navi->Navigate("Child"); + + failed ("Navigate retuned unexpected result", "Recieved: $navresult", "Expected: $child") if $child != $navresult; + my $curr = $navi->Current; + failed ("Current node has a wrong value","Current: $curr","Expected: $child") if $child != $curr; +}; + +test PathToString => sub { + my $doc = new IMPL::DOM::Node(nodeName => 'root'); + my $child = $doc->insertNode( + new IMPL::DOM::Node( + nodeName => 'Child' + ) + ); + + my $navi = new IMPL::DOM::Navigator($doc); + $navi->Navigate("Child"); + + my $expected = "root/Child"; + my $res = $navi->PathToString; + failed("Unexpected PathToString result","Recieved: $res","Expected: $expected") if $res ne $expected; +}; + +test Back => sub { + my $doc = new IMPL::DOM::Node(nodeName => 'root'); + my $child = $doc->insertNode( + new IMPL::DOM::Node( + nodeName => 'Child' + ) + ); + + my $navi = new IMPL::DOM::Navigator($doc); + $navi->Navigate("Child"); + my $navresult = $navi->Back; + + failed ("Back() retuned unexpected result", "Recieved: $navresult", "Expected: $doc") if $doc != $navresult; + my $curr = $navi->Current; + failed ("Current node has a wrong value","Current: $curr","Expected: $doc") if $doc != $curr; +}; + +test selectNodes1 => sub { + my ($this) = @_; + + my $navi = new IMPL::DOM::Navigator($this->doc); + my @result = $navi->selectNodes('contacts','phone'); + failed "Expected to get two entries, but got:",map($_->nodeName,@result) unless @result == 2; +}; + +test selectNodes2 => sub { + my ($this) = @_; + + my $navi = new IMPL::DOM::Navigator($this->doc); + my @result = $navi->selectNodes(undef,'phone'); + failed "Expected to get three entries, but got:",map($_->nodeName,@result) unless @result == 3; +}; + +test FetchDoeachState => sub { + my ($this) = @_; + + my $navi = new IMPL::DOM::Navigator($this->doc); + + $navi->Navigate(undef,'phone'); + + $navi->saveState(); + + my @result; + doeach $navi sub { + push @result,$_; + }; + + failed "Expected to get three nodes, but got: ", map($_->nodeName,@result) unless @result == 3; + + $navi->restoreState(); + @result = (); + + push @result, $_ while fetch $navi; + + failed "Expected to get three nodes, but got: ", map($_->nodeName,@result) unless @result == 3; +}; + +test NavigateSchema => sub { + my $navi = new IMPL::DOM::Navigator::SchemaNavigator(IMPL::DOM::Schema->MetaSchema); + + my $root = $navi->NavigateName('schema') or failed "Failed to navigate to the root element"; + + $navi->saveState; + $navi->NavigateName('Node') or failed "Failed to navigate to a simple node"; + $navi->restoreState; + + failed "Can't navigate from simple node" if $navi->dosafe(sub { $navi->NavigateName('Property') || die } ); + + $navi->NavigateName('ComplexType') or failed "Failed to navigate to a complex node"; + $navi->NavigateName('NodeSet') or failed "Failed to navigate to NodeSet"; + $navi->SchemaBack(); + $navi->NavigateName('NodeList') or failed "Failed to navigate to NodeList"; + $navi->NavigateName('SimpleNode') or failed "Failed to navigate to SimpleNode"; + $navi->NavigateName('Enum') or failed "Failed to navigate to Enum"; + $navi->NavigateName('Item') or failed "Failed to navigate to Item"; + +}; + + +1;