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;