Update of /cvsroot/perl-xml/xml-filter-nsnormalise/t
In directory usw-pr-cvs1:/tmp/cvs-serv17032/t
Modified Files:
2_more.t
Log Message:
- fixed fatal error on mapping to the same prefix the document already uses
- added xmlnsnorm command-line utility
- fixed typo in sample code
Index: 2_more.t
===================================================================
RCS file: /cvsroot/perl-xml/xml-filter-nsnormalise/t/2_more.t,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -d -r1.1.1.1 -r1.2
--- 2_more.t 9 Oct 2002 02:25:33 -0000 1.1.1.1
+++ 2_more.t 9 Oct 2002 23:06:08 -0000 1.2
@@ -15,7 +15,7 @@
}
-plan tests => 28;
+plan tests => 32;
$^W = 1;
@@ -159,6 +159,50 @@
ok($@ =~ /Cannot map 'companya\.com' to 'a' - prefix already occurs in document/,
'Caught attempt to map to a used prefix');
+
+
+##############################################################################
+# Try mapping a URI to the same prefix which is already used and ensure that it
+# all still works.
+#
+
+$xml = '';
+$writer = XML::SAX::Writer->new(Output => \$xml);
+
+$filter = XML::Filter::NSNormalise->new(
+ Map => {
+ 'companya.com' => 'a',
+ },
+ Handler => $writer,
+);
+
+my $p = XML::SAX::ParserFactory->parser(Handler => $filter);
+
+eval {$p->parse_string(q{
+ <doc xmlns:a="companya.com" xmlns:aa="aardvark.com">
+ <a:para>paragraph one</a:para>
+ <aa:para>paragraph two</aa:para>
+ </doc>
+ });
+};
+
+ok(!$@, 'Mapping to same prefix succeeded');
+
+ok($xml =~ s{xmlns:a=('|")companya.com\1}{ATTR},
+ "Original 'a' prefix declaration mapped successfully to itself");
+
+ok($xml =~ s{xmlns:aa=('|")aardvark.com\1}{ATTR},
+ "Original 'aa' prefix declaration survived unscathed");
+
+ok($xml =~ m{
+ ^\s* # optional leading whitespace
+ <doc\s+ATTR\s+ATTR\s*> # root element with two ns attrs
+ \s+<a:para\s*>paragraph\sone</a:para>
+ \s+<aa:para\s*>paragraph\stwo</aa:para>
+ \s+</doc\s*>
+ \s*$
+}xs, "Resulting document unchanged");
+
##############################################################################
|