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