From: Grant M. <gr...@us...> - 2002-10-09 23:06:10
|
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"); + ############################################################################## |