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 2005/12/03 16:45:02 UTC
svn commit: r351963 - in /xerces/xerces-p/trunk/t: DOMImplementation.t UTF8.t
Author: jasons
Date: Sat Dec 3 07:44:56 2005
New Revision: 351963
URL: http://svn.apache.org/viewcvs?rev=351963&view=rev
Log:
new tests
Added:
xerces/xerces-p/trunk/t/DOMImplementation.t
xerces/xerces-p/trunk/t/UTF8.t
Added: xerces/xerces-p/trunk/t/DOMImplementation.t
URL: http://svn.apache.org/viewcvs/xerces/xerces-p/trunk/t/DOMImplementation.t?rev=351963&view=auto
==============================================================================
--- xerces/xerces-p/trunk/t/DOMImplementation.t (added)
+++ xerces/xerces-p/trunk/t/DOMImplementation.t Sat Dec 3 07:44:56 2005
@@ -0,0 +1,65 @@
+# Before `make install' is performed this script should be runnable
+# with `make test'. After `make install' it should work as `perl
+# DOMImplementation.t'
+
+######################### We start with some black magic to print on failure.
+
+END {fail("module loaded") unless $loaded;}
+
+use Carp;
+# use blib;
+use Test::More tests => 6;
+use XML::Xerces;
+
+use lib 't';
+use TestUtils qw($PERSONAL_FILE_NAME $PERSONAL_NO_DOCTYPE $PERSONAL $DOM);
+use vars qw($loaded);
+use strict;
+
+$loaded = 1;
+pass("module loaded");
+
+ # NOTICE: We must now explicitly call XMLPlatformUtils::Initialize()
+ # when the module is loaded. Xerces.pm no longer does this.
+ #
+ #
+XML::Xerces::XMLPlatformUtils::Initialize();
+
+######################### End of black magic.
+
+my $domImpl = XML::Xerces::DOMImplementationRegistry::getDOMImplementation('LS');
+isa_ok($domImpl,"XML::Xerces::DOMImplementation");
+
+my $dt = eval{$domImpl->createDocumentType('x', 'x', 'x')};
+XML::Xerces::error($@) if $@;
+isa_ok($dt,"XML::Xerces::DOMDocumentType");
+
+my $doc = $domImpl->createDocument('myns', 'HISTORY', $dt);
+isa_ok($doc,"XML::Xerces::DOMDocument");
+
+ok(keys %XML::Xerces::DOMDocument::OWNER == 0,
+ "DOMDocument not owned after creation");
+
+$doc->getDocumentElement->setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:myns", 'myns');
+
+for (my $i = 0; $i < 10; $i++) {
+ my $record = $doc->createElement('RECORD');
+ $doc->getDocumentElement->appendChild($record);
+ $record->setAttribute('ID', '0');
+ $record->setAttribute('PRICE', '1.1');
+ $record->setAttribute('VOl', '10');
+}
+my @elements = $doc->getElementsByTagName('*');
+ok(scalar @elements == 11,
+ "Found all created elements")
+ or diag("Found only " . scalar @elements . " elements");
+
+$doc->release();
+
+END {
+ # NOTICE: We must now explicitly call XMLPlatformUtils::Terminate()
+ # when the module is unloaded. Xerces.pm no longer does this for us
+ #
+ #
+ XML::Xerces::XMLPlatformUtils::Terminate();
+}
Added: xerces/xerces-p/trunk/t/UTF8.t
URL: http://svn.apache.org/viewcvs/xerces/xerces-p/trunk/t/UTF8.t?rev=351963&view=auto
==============================================================================
--- xerces/xerces-p/trunk/t/UTF8.t (added)
+++ xerces/xerces-p/trunk/t/UTF8.t Sat Dec 3 07:44:56 2005
@@ -0,0 +1,186 @@
+# Before `make install' is performed this script should be runnable
+# with `make test'. After `make install' it should work as `perl
+# UTF8.t'
+
+######################### We start with some black magic to print on failure.
+
+END {ok(0) unless $loaded;}
+
+use Carp;
+
+use blib;
+use utf8;
+use XML::Xerces;
+use Test::More tests => 35119;
+use Config;
+
+use lib 't';
+use vars qw($loaded);
+use strict;
+
+$loaded = 1;
+ok($loaded, "module loaded");
+
+######################### End of black magic.
+
+my $DOM1 = new XML::Xerces::XercesDOMParser;
+my $ERROR_HANDLER = XML::Xerces::PerlErrorHandler->new();
+$DOM1->setErrorHandler($ERROR_HANDLER);
+
+# check that an element can have a digit if a valid character comes first
+eval {
+ $DOM1->parse('t/letter.xml');
+};
+if ($@) {
+ if (ref($@)) {
+ if ($@->isa('XML::Xerces::XMLException')) {
+ die "Couldn't open letter.xml: ", $@->getMessage();
+ } elsif ($@->isa('XML::Xerces::DOMException')) {
+ die "Couldn't open letter.xml: msg=<$...@->{msg}>, code=$@->{code}";
+ }
+ }
+}
+
+my $doc1 = $DOM1->getDocument();
+my ($digit_node) = $doc1->getElementsByTagName('digit');
+my @digits;
+foreach my $range_node ($digit_node->getElementsByTagName('range')) {
+ my $low = hex($range_node->getAttribute('low'));
+ my $high = hex($range_node->getAttribute('high'));
+ push(@digits,$low..$high);
+}
+foreach my $single_node ($digit_node->getElementsByTagName('single')) {
+ my $value = hex($single_node->getAttribute('value'));
+ push(@digits,$value);
+}
+@digits = map {chr($_)} @digits;
+foreach my $char (@digits) {
+ eval {
+ my $el = $doc1->createElement("_$char");
+ };
+ if ($@) {
+ if (ref $@) {
+ print STDERR "Error code: $@->{code}\n";
+ } else {
+ print STDERR $@;
+ }
+ }
+ ok(!$@) or
+ diag(sprintf("char: <0x%.4X>\n",ord($char)));
+}
+
+my ($extender_node) = $doc1->getElementsByTagName('extender');
+my @extenders;
+foreach my $range_node ($extender_node->getElementsByTagName('range')) {
+ my $low = hex($range_node->getAttribute('low'));
+ my $high = hex($range_node->getAttribute('high'));
+ push(@extenders,$low..$high);
+}
+foreach my $single_node ($extender_node->getElementsByTagName('single')) {
+ my $value = hex($single_node->getAttribute('value'));
+ push(@extenders,$value);
+}
+@extenders = map {chr($_)} @extenders;
+foreach my $char (@extenders) {
+ eval {
+ my $el = $doc1->createElement("_$char");
+ };
+ if ($@) {
+ if (ref $@) {
+ diag("Error code: $@->{code}\n");
+ } else {
+ diag($@);
+ }
+ }
+ ok(!$@) or
+ diag(sprintf("char: <0x%.4X>\n",ord($char)));
+}
+
+my ($combining_char_node) = $doc1->getElementsByTagName('combiningchar');
+my @combining_chars;
+foreach my $range_node ($combining_char_node->getElementsByTagName('range')) {
+ my $low = hex($range_node->getAttribute('low'));
+ my $high = hex($range_node->getAttribute('high'));
+ push(@combining_chars,$low..$high);
+}
+foreach my $single_node ($combining_char_node->getElementsByTagName('single')) {
+ my $value = hex($single_node->getAttribute('value'));
+ push(@combining_chars,$value);
+}
+@combining_chars = map {chr($_)} @combining_chars;
+foreach my $char (@combining_chars) {
+ eval {
+ my $el = $doc1->createElement("_$char");
+ };
+ if ($@) {
+ if (ref $@) {
+ diag("Error code: $@->{code}\n");
+ } else {
+ diag($@);
+ }
+ }
+ ok(!$@) or
+ diag(sprintf("char: <0x%.4X>\n",ord($char)));
+}
+
+my ($letter_node) = $doc1->getElementsByTagName('letter');
+my @letters;
+foreach my $range_node ($letter_node->getElementsByTagName('range')) {
+ my $low = hex($range_node->getAttribute('low'));
+ my $high = hex($range_node->getAttribute('high'));
+ push(@letters,$low..$high);
+}
+foreach my $single_node ($letter_node->getElementsByTagName('single')) {
+ my $value = hex($single_node->getAttribute('value'));
+ push(@letters,$value);
+}
+@letters = map {chr($_)} @letters;
+# $XML::Xerces::DEBUG_UTF8_IN = 1;
+# $XML::Xerces::DEBUG_UTF8_OUT = 1;
+foreach my $char (@letters) {
+ eval {
+ my $el = $doc1->createElement("$char");
+ };
+ if ($@) {
+ if (ref $@) {
+ diag("Error code: $@->{code}\n");
+ } else {
+ diag($@);
+ }
+ }
+ ok(!$@) or
+ diag(sprintf("char: <0x%.4X>\n",ord($char)));
+}
+
+my ($ideograph_node) = $doc1->getElementsByTagName('ideographic');
+my @ideographs;
+foreach my $range_node ($ideograph_node->getElementsByTagName('range')) {
+ my $low = hex($range_node->getAttribute('low'));
+ my $high = hex($range_node->getAttribute('high'));
+ push(@ideographs,$low..$high);
+}
+foreach my $single_node ($ideograph_node->getElementsByTagName('single')) {
+ my $value = hex($single_node->getAttribute('value'));
+ push(@ideographs,$value);
+}
+@ideographs = map {chr($_)} @ideographs;
+# $XML::Xerces::DEBUG_UTF8_IN = 1;
+# $XML::Xerces::DEBUG_UTF8_OUT = 1;
+foreach my $char (@ideographs) {
+ eval {
+ my $el = $doc1->createElement("$char");
+ };
+ if ($@) {
+ if (ref $@) {
+ diag("Error code: $@->{code}\n");
+ } else {
+ diag($@);
+ }
+ }
+ ok(!$@) or
+ diag(sprintf("char: <0x%.4X>\n",ord($char)));
+}
+
+# $XML::Xerces::DEBUG_UTF8_IN = 0;
+# $XML::Xerces::DEBUG_UTF8_OUT = 0;
+
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org