You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ja...@apache.org on 2003/11/10 18:46:55 UTC

svn commit: rev 101 - xml/xerces-p/trunk/t

Author: jasons
Date: Mon Nov 10 09:46:55 2003
New Revision: 101

Added:
   xml/xerces-p/trunk/t/DOMBuilder.t
   xml/xerces-p/trunk/t/DOMParser.t
   xml/xerces-p/trunk/t/SAX2XMLReader.t
Log:
new

Added: xml/xerces-p/trunk/t/DOMBuilder.t
==============================================================================
--- (empty file)
+++ xml/xerces-p/trunk/t/DOMBuilder.t	Mon Nov 10 09:46:55 2003
@@ -0,0 +1,85 @@
+# Before `make install' is performed this script should be runnable
+# with `make test'. After `make install' it should work as `perl
+# DOMParser.t'
+
+######################### We start with some black magic to print on failure.
+
+END {fail() unless $loaded;}
+
+use Carp;
+# use blib;
+use XML::Xerces qw(error);
+use Test::More tests => 12;
+use Config;
+
+use lib 't';
+use TestUtils qw($PERSONAL_FILE_NAME);
+use vars qw($loaded $error);
+use strict;
+
+$loaded = 1;
+pass('module loaded');
+
+######################### End of black magic.
+
+my $document = q[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<contributors>
+  <person Role="manager">
+    <name>Mike Pogue</name>
+    <email>mpogue@us.ibm.com</email>
+  </person>
+  <person Role="developer">
+    <name>Tom Watson</name>
+    <email>rtwatson@us.ibm.com</email>
+  </person>
+  <person Role="tech writer">
+    <name>Susan Hardenbrook</name>
+    <email>susanhar@us.ibm.com</email>
+  </person>
+</contributors>];
+
+my $impl = XML::Xerces::DOMImplementationRegistry::getDOMImplementation('LS');
+my $DOM = $impl->createDOMBuilder($XML::Xerces::DOMImplementationLS::MODE_SYNCHRONOUS,'');
+SKIP: {
+  skip "DOMErrorHandler not implemented", 1;
+  $DOM->setErrorHandler(XML::Xerces::PerlErrorHandler->new());
+  pass('setErrorHandler');
+}
+if ($DOM->canSetFeature("$XML::Xerces::XMLUni::fgDOMValidation", 1)) {
+  $DOM->setFeature("$XML::Xerces::XMLUni::fgDOMValidation", 1);
+  pass('validation=>1');
+} else {
+  fail('validation=>1');
+}
+if ($DOM->canSetFeature("$XML::Xerces::XMLUni::fgDOMValidateIfSchema", 0)) {
+  $DOM->setFeature("$XML::Xerces::XMLUni::fgDOMValidateIfSchema", 0);
+  pass('validate_if_schema=>1');
+} else {
+  fail('validate_if_schema=>1');
+}
+
+SKIP: {
+  skip "DOMInputSource not implemented", 2;
+  my $is = eval{$impl->createDOMInputSource()};
+  ok(defined $is)
+    or diag
+      $is->setSystemId($PERSONAL_FILE_NAME);
+  eval{$DOM->parse($is)};
+  ok((not $@),'parse input source');
+}
+
+my $doc = eval{$DOM->parseURI($PERSONAL_FILE_NAME)};
+ok((not $@),'parseURI');
+isa_ok($doc,'XML::Xerces::DOMDocument');
+
+my @persons = $doc->getElementsByTagName('person');
+is(scalar @persons, 6,'getting <person>s');
+
+# test the overloaded parse version
+$doc = eval{$DOM->parseURI("file:$PERSONAL_FILE_NAME")};
+ok((not $@),'parseURI with file:');
+isa_ok($doc,'XML::Xerces::DOMDocument');
+
+@persons = $doc->getElementsByTagName('person');
+is(scalar @persons, 6,'getting <person>s');
+

Added: xml/xerces-p/trunk/t/DOMParser.t
==============================================================================
--- (empty file)
+++ xml/xerces-p/trunk/t/DOMParser.t	Mon Nov 10 09:46:55 2003
@@ -0,0 +1,150 @@
+# Before `make install' is performed this script should be runnable
+# with `make test'. After `make install' it should work as `perl
+# DOMParser.t'
+
+######################### We start with some black magic to print on failure.
+
+END {ok(0) unless $loaded;}
+
+use Carp;
+# use blib;
+use XML::Xerces qw(error);
+use Test::More tests => 11;
+use Config;
+
+use lib 't';
+use TestUtils qw($PERSONAL_FILE_NAME);
+use vars qw($loaded $error);
+use strict;
+
+$loaded = 1;
+ok($loaded, "module loaded");
+
+######################### End of black magic.
+
+my $document = q[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<contributors>
+  <person Role="manager">
+    <name>Mike Pogue</name>
+    <email>mpogue@us.ibm.com</email>
+  </person>
+  <person Role="developer">
+    <name>Tom Watson</name>
+    <email>rtwatson@us.ibm.com</email>
+  </person>
+  <person Role="tech writer">
+    <name>Susan Hardenbrook</name>
+    <email>susanhar@us.ibm.com</email>
+  </person>
+</contributors>];
+
+my $DOM = XML::Xerces::XercesDOMParser->new();
+$DOM->setErrorHandler(XML::Xerces::PerlErrorHandler->new());
+$DOM->setValidationScheme ($XML::Xerces::AbstractDOMParser::Val_Always);
+
+eval{$DOM->parse(XML::Xerces::MemBufInputSource->new($document, 'foo'))};
+ok($@,'no dtd');
+
+$DOM = XML::Xerces::XercesDOMParser->new();
+$DOM->setErrorHandler(XML::Xerces::PerlErrorHandler->new());
+
+eval{$DOM->parse(XML::Xerces::MemBufInputSource->new($document, 'foo'))};
+ok((not $@),'membuf parse');
+
+# test the overloaded parse version
+$DOM->parse($PERSONAL_FILE_NAME);
+pass('parse filename');
+
+
+# test the progressive parsing interface
+my $token = XML::Xerces::XMLPScanToken->new();
+$DOM->parseFirst($PERSONAL_FILE_NAME,$token);
+while ($DOM->parseNext($token)) {
+  # do nothing
+}
+pass('progressive parse');
+
+
+
+# test that we can reuse the parse again and again
+$document = <<\END;
+<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
+
+<!-- @version: -->
+<personnel>
+
+  <person id="Big.Boss">
+    <name><family>Boss</family> <given>Big</given></name>
+    <email>chief@foo.com</email>
+    <link subordinates="one.worker two.worker three.worker four.worker five.worker"/>
+  </person>
+
+  <foo id="two.worker">
+    <name><family>Worker</family> <given>Two</given></name>
+    <email>two@foo.com</email>
+    <link manager="Big.Boss"/>
+  </person>
+
+</personnel>
+END
+package MyErrorHandler;
+use strict;
+use vars qw(@ISA);
+@ISA = qw(XML::Xerces::PerlErrorHandler);
+sub warning {
+}
+
+sub error {
+  my $LINE = $_[1]->getLineNumber;
+  my $COLUMN = $_[1]->getColumnNumber;
+  my $MESSAGE = $_[1]->getMessage;
+  $::error = <<"EOE";
+ERROR:
+LINE:    $LINE
+COLUMN:  $COLUMN
+MESSAGE: $MESSAGE
+EOE
+  die();
+}
+
+sub fatal_error {
+  my $LINE = $_[1]->getLineNumber;
+  my $COLUMN = $_[1]->getColumnNumber;
+  my $MESSAGE = $_[1]->getMessage;
+  $::error = <<"EOE";
+FATAL ERROR:
+LINE:    $LINE
+COLUMN:  $COLUMN
+MESSAGE: $MESSAGE
+EOE
+  die();
+}
+1;
+
+package main;
+$token = XML::Xerces::XMLPScanToken->new();
+$DOM->setErrorHandler(MyErrorHandler->new());
+$::error = '';
+eval {
+  $DOM->parseFirst(XML::Xerces::MemBufInputSource->new($document),$token);
+  while ($DOM->parseNext($token)) {
+  }
+};
+ok($::error,'fatal error in progressive parse')
+  or diag("Here's the error: $@");
+my $doc = $DOM->getDocument();
+ok($doc,'doc');
+my $root = $doc->getDocumentElement();
+ok($root,'root');
+my ($person) = $root->getElementsByTagName('person');
+ok($person,'person');
+my ($foo) = $root->getElementsByTagName('foo');
+ok($foo,'foo');
+
+$::error = '';
+$DOM->parseReset($token);
+eval {
+  $DOM->parse(XML::Xerces::MemBufInputSource->new($document));
+};
+ok($::error,'fatal error in parse')
+  or diag("Here's the error: $@");

Added: xml/xerces-p/trunk/t/SAX2XMLReader.t
==============================================================================
--- (empty file)
+++ xml/xerces-p/trunk/t/SAX2XMLReader.t	Mon Nov 10 09:46:55 2003
@@ -0,0 +1,218 @@
+# Before `make install' is performed this script should be runnable
+# with `make test'. After `make install' it should work as `perl
+# SAX2XMLReader.t'
+
+######################### We start with some black magic to print on failure.
+
+END {ok(0) unless $loaded;}
+
+use Carp;
+# use blib;
+use XML::Xerces qw(error);
+use Test::More tests => 16;
+use Config;
+
+use lib 't';
+use TestUtils qw($PERSONAL_FILE_NAME);
+use vars qw($loaded $error);
+use strict;
+
+$loaded = 1;
+ok($loaded, "module loaded");
+
+######################### End of black magic.
+
+my $document = q[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<contributors>
+  <person Role="manager">
+    <name>Mike Pogue</name>
+    <email>mpogue@us.ibm.com</email>
+  </person>
+  <person Role="developer">
+    <name>Tom Watson</name>
+    <email>rtwatson@us.ibm.com</email>
+  </person>
+  <person Role="tech writer">
+    <name>Susan Hardenbrook</name>
+    <email>susanhar@us.ibm.com</email>
+  </person>
+</contributors>];
+
+package MyContentHandler;
+use strict;
+use vars qw(@ISA);
+@ISA = qw(XML::Xerces::PerlContentHandler);
+
+sub start_element {
+  my $self = shift;
+  $self->{elements}++;
+}
+sub characters {
+  my ($self,$str,$len) = @_;
+  $self->{chars} += $len;
+}
+sub ignorable_whitespace {
+  my ($self,$str,$len) = @_;
+  $self->{ws} += $len;
+}
+
+sub reset_document {
+  my ($self) = @_;
+  $self->{ws} = 0;
+  $self->{chars} = 0;
+  $self->{elements} = 0;
+}
+
+package main;
+my $SAX = XML::Xerces::XMLReaderFactory::createXMLReader();
+my $CONTENT_HANDLER = MyContentHandler->new();
+$SAX->setContentHandler($CONTENT_HANDLER);
+$SAX->setErrorHandler(XML::Xerces::PerlErrorHandler->new());
+eval {
+    $SAX->setFeature("$XML::Xerces::XMLUni::fgSAX2CoreValidation", 1);
+    $SAX->setFeature("$XML::Xerces::XMLUni::fgXercesDynamic", 0);
+};
+ok((not $@),'setting validate=>yes, dynamic=>no')
+  or diag("Here's the error: $@");
+
+eval{$SAX->parse(XML::Xerces::MemBufInputSource->new($document, 'foo'))};
+ok($@,'no dtd');
+
+$SAX = XML::Xerces::XMLReaderFactory::createXMLReader();
+$SAX->setContentHandler($CONTENT_HANDLER);
+$SAX->setErrorHandler(XML::Xerces::PerlErrorHandler->new());
+eval {
+    $SAX->setFeature("$XML::Xerces::XMLUni::fgSAX2CoreValidation", 1);
+    $SAX->setFeature("$XML::Xerces::XMLUni::fgXercesDynamic", 1);
+};
+ok((not $@),'setting dynamic=>yes')
+  or diag("Here's the error: $@");
+
+
+# reset the counts
+$CONTENT_HANDLER->reset_document();
+
+eval{$SAX->parse(XML::Xerces::MemBufInputSource->new($document, 'foo'))};
+ok((not $@),'membuf parse');
+
+ok($CONTENT_HANDLER->{elements} == 10,'elements');
+ok($CONTENT_HANDLER->{chars} == 141,'chars');
+ok($CONTENT_HANDLER->{ws} == 0,'ws');
+
+# test the overloaded parse version
+$SAX->parse($PERSONAL_FILE_NAME);
+pass('parse filename');
+
+# reset the counts
+$CONTENT_HANDLER->reset_document();
+
+# test the progressive parsing interface
+my $token = XML::Xerces::XMLPScanToken->new();
+$SAX->parseFirst($PERSONAL_FILE_NAME,$token);
+while ($SAX->parseNext($token)) {
+  # do nothing
+}
+pass('progressive parse');
+ok($CONTENT_HANDLER->{elements} == 37, 'element count after progressive parse');
+
+
+# reset the counts, and parser for new parse
+$CONTENT_HANDLER->reset_document();
+$SAX->parseReset($token);
+
+# test the progressive parsing interface
+$token = XML::Xerces::XMLPScanToken->new();
+$SAX->parseFirst($PERSONAL_FILE_NAME,$token);
+while ($SAX->parseNext($token)) {
+  last if $CONTENT_HANDLER->{elements} == 10;
+}
+pass('early exit from progressive parse');
+ok($CONTENT_HANDLER->{elements} == 10, 'element count after early exit from progressive parse');
+
+# reset the parser for new parse
+$SAX->parseReset($token);
+
+# test that we can reuse the parse again and again
+$document = <<\END;
+<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
+
+<!-- @version: -->
+<personnel>
+
+  <person id="Big.Boss">
+    <name><family>Boss</family> <given>Big</given></name>
+    <email>chief@foo.com</email>
+    <link subordinates="one.worker two.worker three.worker four.worker five.worker"/>
+  </person>
+
+  <person id="one.worker">
+    <name><family>Worker</family> <given>One</given></name>
+    <email>one@foo.com</email>
+    <link manager="Big.Boss"/>
+  </person>
+
+  <foo id="two.worker">
+    <name><family>Worker</family> <given>Two</given></name>
+    <email>two@foo.com</email>
+    <link manager="Big.Boss"/>
+  </person>
+
+</personnel>
+END
+package MyErrorHandler;
+use strict;
+use vars qw(@ISA);
+@ISA = qw(XML::Xerces::PerlErrorHandler);
+sub warning {
+}
+
+sub error {
+  my $LINE = $_[1]->getLineNumber;
+  my $COLUMN = $_[1]->getColumnNumber;
+  my $MESSAGE = $_[1]->getMessage;
+  $::error = <<"EOE";
+ERROR:
+LINE:    $LINE
+COLUMN:  $COLUMN
+MESSAGE: $MESSAGE
+EOE
+  die();
+}
+
+sub fatal_error {
+  my $LINE = $_[1]->getLineNumber;
+  my $COLUMN = $_[1]->getColumnNumber;
+  my $MESSAGE = $_[1]->getMessage;
+  $::error = <<"EOE";
+FATAL ERROR:
+LINE:    $LINE
+COLUMN:  $COLUMN
+MESSAGE: $MESSAGE
+EOE
+  die();
+}
+1;
+
+package main;
+$token = XML::Xerces::XMLPScanToken->new();
+$SAX->setErrorHandler(MyErrorHandler->new());
+$::error = '';
+eval {
+  $SAX->parseFirst(XML::Xerces::MemBufInputSource->new($document),$token);
+  while ($SAX->parseNext($token)) {
+    # do nothing
+  }
+};
+ok($::error,'fatal error in progressive parse')
+  or diag("Here's the error: $@");
+
+# reset the state for a new parse
+$::error = '';
+$SAX->parseReset($token);
+$SAX->setErrorHandler(XML::Xerces::PerlErrorHandler->new());
+
+eval {$SAX->parse($PERSONAL_FILE_NAME)};
+ok((not $@),'successful parse after fatal error');
+
+eval {$SAX->parse(XML::Xerces::MemBufInputSource->new($document))};
+ok($@,'fatal error in parse');

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org