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 19:15:13 UTC
svn commit: rev 115 - xml/xerces-p/trunk/t
Author: jasons
Date: Mon Nov 10 10:15:13 2003
New Revision: 115
Modified:
xml/xerces-p/trunk/t/SAXParser.t
Log:
better use of Test::More
few new tests
Modified: xml/xerces-p/trunk/t/SAXParser.t
==============================================================================
--- xml/xerces-p/trunk/t/SAXParser.t (original)
+++ xml/xerces-p/trunk/t/SAXParser.t Mon Nov 10 10:15:13 2003
@@ -7,9 +7,9 @@
END {ok(0) unless $loaded;}
use Carp;
-# use blib;
+use blib;
use XML::Xerces;
-use Test::More tests => 8;
+use Test::More tests => 12;
use Config;
use lib 't';
@@ -56,25 +56,35 @@
$self->{ws} += $len;
}
+sub reset_document {
+ my ($self) = @_;
+ $self->{ws} = 0;
+ $self->{chars} = 0;
+ $self->{elements} = 0;
+}
+
package main;
my $SAX = XML::Xerces::SAXParser->new();
my $DOCUMENT_HANDLER = MyDocumentHandler->new();
my $ERROR_HANDLER = XML::Xerces::PerlErrorHandler->new();
-$DOCUMENT_HANDLER->{elements} = 0;
-$DOCUMENT_HANDLER->{chars} = 0;
-$DOCUMENT_HANDLER->{ws} = 0;
+
$SAX->setDocumentHandler($DOCUMENT_HANDLER);
$SAX->setErrorHandler($ERROR_HANDLER);
+# reset the counts
+$DOCUMENT_HANDLER->reset_document();
+
$SAX->parse(XML::Xerces::MemBufInputSource->new($document, 'foo'));
-ok($DOCUMENT_HANDLER->{elements} == 10);
-ok($DOCUMENT_HANDLER->{chars} == 141);
-ok($DOCUMENT_HANDLER->{ws} == 0);
+ok($DOCUMENT_HANDLER->{elements} == 10,'elements');
+ok($DOCUMENT_HANDLER->{chars} == 141,'chars');
+ok($DOCUMENT_HANDLER->{ws} == 0,'ws');
# test the overloaded parse version
$SAX->parse($PERSONAL_FILE_NAME);
-ok(1);
+pass('successful parse');
+# reset the counts
+$DOCUMENT_HANDLER->reset_document();
# test the progressive parsing interface
my $token = XML::Xerces::XMLPScanToken->new();
@@ -82,9 +92,19 @@
while ($SAX->parseNext($token)) {
# do nothing
}
-ok(1);
+pass('successful progressive parse');
+ok($DOCUMENT_HANDLER->{elements} == 37, 'element count after progressive parse');
+# reset the counts
+$DOCUMENT_HANDLER->reset_document();
+$token = XML::Xerces::XMLPScanToken->new();
+$SAX->parseFirst($PERSONAL_FILE_NAME,$token);
+while ($SAX->parseNext($token)) {
+ last if $DOCUMENT_HANDLER->{elements} == 10;
+}
+pass('early exit from progressive parse');
+ok($DOCUMENT_HANDLER->{elements} == 10, 'element count after early exit from progressive parse');
# test that we can reuse the parse again and again
$document = <<\END;
@@ -111,24 +131,6 @@
<link manager="Big.Boss"/>
</person>
- <person id="three.worker">
- <name><family>Worker</family> <given>Three</given></name>
- <email>three@foo.com</email>
- <link manager="Big.Boss"/>
- </person>
-
- <person id="four.worker">
- <name><family>Worker</family> <given>Four</given></name>
- <email>four@foo.com</email>
- <link manager="Big.Boss"/>
- </person>
-
- <person id="five.worker">
- <name><family>Worker</family> <given>Five</given></name>
- <email>five@foo.com</email>
- <link manager="Big.Boss"/>
- </person>
-
</personnel>
END
package MyErrorHandler;
@@ -175,11 +177,16 @@
# do nothing
}
};
-ok($::error);
+ok($::error,'fatal error in progressive parse')
+ or diag("Here's the error: $@");
+
+# reset the state for a new parse
$::error = '';
$SAX->parseReset($token);
-eval {
- $SAX->parse(XML::Xerces::MemBufInputSource->new($document));
-};
-ok($::error);
+$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