Mercurial > pub > Impl
diff _test/Test/DOM/Builder.pm @ 34:a8086f85a571
Dom Builder
author | Sergey |
---|---|
date | Mon, 16 Nov 2009 18:39:25 +0300 |
parents | |
children | f25d021780b3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/_test/Test/DOM/Builder.pm Mon Nov 16 18:39:25 2009 +0300 @@ -0,0 +1,71 @@ +package Test::DOM::Builder; +use strict; +use warnings; + +use base qw(IMPL::Test::Unit); +__PACKAGE__->PassThroughArgs; + +use IMPL::Class::Property; +use IMPL::Test qw(test failed shared); + +require IMPL::DOM::Schema; +require IMPL::DOM::Navigator::Builder; +require IMPL::DOM::Document; + +BEGIN { + public property schemaDoc => prop_all; +} + +sub CTOR { + my ($this) = @_; + + my $schema = new IMPL::DOM::Schema; + $schema->appendRange( + IMPL::DOM::Schema::ComplexNode->new( name => 'personInfo' )->appendRange( + IMPL::DOM::Schema::NodeSet->new()->appendRange( + new IMPL::DOM::Schema::SimpleNode( name => 'firstName' ), + new IMPL::DOM::Schema::SimpleNode( name => 'lastName' ), + new IMPL::DOM::Schema::ComplexNode( name => 'address' )->appendRange( + IMPL::DOM::Schema::NodeSet->new()->appendRange( + new IMPL::DOM::Schema::SimpleNode( name => 'street' ), + new IMPL::DOM::Schema::SimpleNode( name => 'line', minOccur => 0 ) + ) + ) + ) + ) + ); + + $this->schemaDoc( $schema ); +} + +test CreateBuilder => sub { + my ($this) = @_; + + my $builder = IMPL::DOM::Navigator::Builder->new( + new IMPL::DOM::Document(nodeName => 'personInfo'), + $this->schemaDoc + ); +}; + +test BuildDocument => sub { + my ($this) = @_; + + my $builder = IMPL::DOM::Navigator::Builder->new( + 'IMPL::DOM::Document', + $this->schemaDoc + ); + + $builder->NavigateCreate('personInfo', version => '1'); + $builder->NavigateCreate('firstName')->nodeValue('Nemo'); + $builder->Back(); + $builder->NavigateCreate('address', local => 1); + $builder->NavigateCreate('street')->nodeValue('Hellroad'); + $builder->Back(); + $builder->Back(); + $builder->Back(); + + return 1; +}; + + +1;