1 |
#!/usr/bin/perl |
#!/usr/bin/perl |
2 |
use strict; |
use strict; |
3 |
require Test::Simple; |
require Test::Simple; |
4 |
require Message::Markup::XML; |
require Message::Markup::XML::Node; |
5 |
use Message::Markup::XML::QName qw/UNDEF_URI NULL_URI DEFAULT_PFX/; |
use Message::Markup::XML::QName qw/UNDEF_URI NULL_URI DEFAULT_PFX EMPTY_PFX |
6 |
|
EMPTY_URI ZERO_PFX ZERO_URI/; |
7 |
sub ok ($;$); |
sub ok ($;$); |
8 |
my $e = new Message::Markup::XML (type => '#element', local_name => 'test', |
my $e = new Message::Markup::XML::Node |
9 |
namespace_uri => 'http://something.test/'); |
(type => '#element', local_name => 'test', |
10 |
|
namespace_uri => 'http://something.test/'); |
11 |
|
use Carp q(verbose); |
12 |
my @reg_p2n = ( |
my @reg_p2n = ( |
13 |
{ |
{ |
14 |
prefix => q(test1), |
prefix => q(test1), |
97 |
opt => {check_name => 1, resolve_name_uri_relative => 1}, |
opt => {check_name => 1, resolve_name_uri_relative => 1}, |
98 |
result => 1, |
result => 1, |
99 |
}, |
}, |
100 |
|
{ |
101 |
|
prefix => EMPTY_PFX, |
102 |
|
name => q<about:name>, |
103 |
|
opt => {check_prefix => 1, use_prefix_empty => 0}, |
104 |
|
result => 0, |
105 |
|
}, |
106 |
|
{ |
107 |
|
prefix => EMPTY_PFX, |
108 |
|
name => q<about:name>, |
109 |
|
opt => {check_prefix => 1, use_prefix_empty => 1}, |
110 |
|
result => 1, |
111 |
|
}, |
112 |
|
{ |
113 |
|
prefix => ZERO_PFX, |
114 |
|
name => q<about:name>, |
115 |
|
opt => {check_prefix => 1}, |
116 |
|
result => 0, |
117 |
|
}, |
118 |
); |
); |
119 |
|
|
120 |
my @get_p2n = ( |
my @get_p2n = ( |
171 |
___dont_register => 1}, |
___dont_register => 1}, |
172 |
result => 1, |
result => 1, |
173 |
}, |
}, |
174 |
|
{ |
175 |
|
prefix => EMPTY_PFX, |
176 |
|
name => q<http://test.test/2>, |
177 |
|
opt => {use_prefix_empty => 1}, |
178 |
|
result => 1, |
179 |
|
}, |
180 |
); |
); |
181 |
|
|
182 |
my @qname = ( |
my @qname = ( |
222 |
}, |
}, |
223 |
{ |
{ |
224 |
qname => q":bar", |
qname => q":bar", |
225 |
prefix => q"", |
join_qname => q"bar", |
226 |
|
prefix => DEFAULT_PFX, |
227 |
lname => q"bar", |
lname => q"bar", |
228 |
result => 0, |
result => 0, |
229 |
|
join_result => 1, |
230 |
opt => {check_qname => 1, check_prefix => 1, |
opt => {check_qname => 1, check_prefix => 1, |
231 |
check_local_name => 1}, |
check_local_name => 1}, |
232 |
}, |
}, |
263 |
check_local_name => 1, qname_separator => '|', |
check_local_name => 1, qname_separator => '|', |
264 |
use_local_name_star => 1}, |
use_local_name_star => 1}, |
265 |
}, |
}, |
266 |
|
{ |
267 |
|
qname => q":b", |
268 |
|
prefix => EMPTY_PFX, |
269 |
|
lname => q:b:, |
270 |
|
result => 0, |
271 |
|
opt => {check_qname => 1, check_prefix => 1, |
272 |
|
check_local_name => 1, |
273 |
|
use_prefix_empty => 0}, |
274 |
|
}, |
275 |
|
{ |
276 |
|
qname => q":b", |
277 |
|
prefix => EMPTY_PFX, |
278 |
|
lname => q:b:, |
279 |
|
result => 1, |
280 |
|
opt => {check_qname => 1, check_prefix => 1, |
281 |
|
check_local_name => 1, |
282 |
|
use_prefix_empty => 1}, |
283 |
|
}, |
284 |
|
{ |
285 |
|
qname => q"b", |
286 |
|
prefix => DEFAULT_PFX, |
287 |
|
lname => q:b:, |
288 |
|
result => 1, |
289 |
|
opt => {check_qname => 1, check_prefix => 1, |
290 |
|
check_local_name => 1, |
291 |
|
use_prefix_empty => 1}, |
292 |
|
}, |
293 |
); |
); |
294 |
|
|
295 |
my @gen_pfx = ( |
my @gen_pfx = ( |
348 |
n2p => q:h:, |
n2p => q:h:, |
349 |
}, |
}, |
350 |
{ |
{ |
351 |
|
name => q<http://uri.example/b>, |
352 |
|
prefix => q:b:, |
353 |
|
}, |
354 |
|
{ |
355 |
|
name => q<http://uri.example/bc>, |
356 |
|
prefix => q:bc:, |
357 |
|
}, |
358 |
|
{ |
359 |
|
name => q<http://uri.example/01w>, |
360 |
|
prefix => q:w:, |
361 |
|
}, |
362 |
|
{ |
363 |
name => q<test/0name/xmlns>, |
name => q<test/0name/xmlns>, |
364 |
prefix => q:name:, |
prefix => q:name:, |
365 |
}, |
}, |
411 |
xname => [NULL_URI, q:bar:], |
xname => [NULL_URI, q:bar:], |
412 |
opt => {use_prefix_default => 1, use_name_null => 1}, |
opt => {use_prefix_default => 1, use_name_null => 1}, |
413 |
}, |
}, |
414 |
|
{ |
415 |
|
reset => 0, |
416 |
|
ns => {(EMPTY_PFX) => q<about:>}, |
417 |
|
qname => q":bar", |
418 |
|
xname => [q<about:>, q:bar:], |
419 |
|
opt => {use_prefix_empty => 1}, |
420 |
|
}, |
421 |
|
{ |
422 |
|
reset => 0, |
423 |
|
ns => {(EMPTY_PFX) => q<about:>, |
424 |
|
(DEFAULT_PFX) => q<data:,>}, |
425 |
|
qname => q"bar", |
426 |
|
xname => [q<data:,>, q:bar:], |
427 |
|
opt => {use_prefix_empty => 1, use_prefix_default => 1}, |
428 |
|
}, |
429 |
); |
); |
430 |
|
|
431 |
Test::Simple->import (tests => scalar (@reg_p2n) |
Test::Simple->import (tests => scalar (@reg_p2n) |
433 |
+ scalar (@qname) * 2 |
+ scalar (@qname) * 2 |
434 |
+ scalar (@gen_pfx) * 2 |
+ scalar (@gen_pfx) * 2 |
435 |
+ scalar (@expand) * 2); |
+ scalar (@expand) * 2); |
436 |
|
eval q{ |
437 |
|
sub ok ($;$) { |
438 |
|
my ($cond, $desc) = @_; |
439 |
|
if ($cond) { |
440 |
|
Test::Simple::ok (1); |
441 |
|
} else { |
442 |
|
Test::Simple::ok (0, $desc); |
443 |
|
} |
444 |
|
}}; |
445 |
|
|
446 |
for (@reg_p2n) { |
for (@reg_p2n) { |
447 |
my $chk = Message::Markup::XML::QName::register_prefix_to_name |
my $chk = Message::Markup::XML::QName::register_prefix_to_name |
448 |
($e, $_->{prefix} => $_->{name}, %{$_->{opt}||{}}); |
($e, $_->{prefix} => $_->{name}, %{$_->{opt}||{}}); |
449 |
ok ($chk->{success} == $_->{result}, $chk->{reason}); |
ok ($chk->{success} == $_->{result}, 'Register pfx->URI: '.$chk->{reason}); |
450 |
} |
} |
451 |
|
|
452 |
for (@get_p2n) { |
for (@get_p2n) { |
473 |
if ($_->{result}) { |
if ($_->{result}) { |
474 |
ok $chk->{prefix}.':'.($chk->{local_name_star} ? '*' : $chk->{local_name}) |
ok $chk->{prefix}.':'.($chk->{local_name_star} ? '*' : $chk->{local_name}) |
475 |
eq $_->{prefix} . ':' . $_->{lname}, |
eq $_->{prefix} . ':' . $_->{lname}, |
476 |
"$chk->{prefix}:$chk->{local_name}($chk->{local_name_star})"; |
"Split 1: $_->{qname} => $chk->{prefix}:$chk->{local_name}($chk->{local_name_star})"; |
477 |
} else { |
} else { |
478 |
ok $chk->{success} == $_->{result}, |
ok $chk->{success} == $_->{result}, |
479 |
"$chk->{prefix}:$chk->{local_name}($chk->{local_name_star})"; |
"Split 0: $_->{qname} => $chk->{prefix}:$chk->{local_name}($chk->{local_name_star})"; |
480 |
} |
} |
481 |
|
|
482 |
$chk = Message::Markup::XML::QName::join_qname |
$chk = Message::Markup::XML::QName::join_qname |
483 |
($_->{prefix}, $_->{lname}, %{$_->{opt}||{}}); |
($_->{prefix}, $_->{lname}, %{$_->{opt}||{}}); |
484 |
if ($_->{result}) { |
if (defined $_->{join_result} ? $_->{join_result} : $_->{result}) { |
485 |
ok $chk->{qname} eq $_->{qname}, $chk->{qname}; |
ok $chk->{qname} eq ($_->{join_qname} || $_->{qname}), qq(Join 1: "$_->{prefix}":"$_->{lname}" => "$chk->{qname}" ("@{[$_->{join_qname} || $_->{qname}]}" expected)); |
486 |
} else { |
} else { |
487 |
ok $chk->{success} == $_->{result}, $chk->{qname}; |
ok $chk->{success} == ((defined $_->{join_result} and $_->{join_result}) or $_->{result}), |
488 |
|
"Join 0: $chk->{success}; $_->{prefix}, $_->{lname} => $chk->{qname}"; |
489 |
} |
} |
490 |
} |
} |
491 |
|
|
496 |
if ($pfx eq $_->{prefix}) { |
if ($pfx eq $_->{prefix}) { |
497 |
my $chk = Message::Markup::XML::QName::register_prefix_to_name |
my $chk = Message::Markup::XML::QName::register_prefix_to_name |
498 |
($e, $pfx => $_->{name}); |
($e, $pfx => $_->{name}); |
499 |
ok $chk->{success}, $chk->{reason}; |
ok $chk->{success}, 'Generate pfx: '.$chk->{reason}; |
500 |
} else { |
} else { |
501 |
ok $pfx eq $_->{prefix}, ":$pfx: (expected :$_->{prefix}:"; |
ok $pfx eq $_->{prefix}, "Generate pfx: :$pfx: (expected :$_->{prefix}:"; |
502 |
} |
} |
503 |
} |
} |
504 |
|
|
508 |
%{$_->{opt}||{}}, |
%{$_->{opt}||{}}, |
509 |
make_new_prefix => 1); |
make_new_prefix => 1); |
510 |
ok $chk->{success} && ($chk->{prefix} eq ($_->{n2p} || $_->{prefix})), |
ok $chk->{success} && ($chk->{prefix} eq ($_->{n2p} || $_->{prefix})), |
511 |
"$chk->{prefix} (@{[$_->{n2p} || $_->{prefix}]} is expected; $chk->{reason})"; |
"URI->Pfx: $chk->{prefix} (@{[$_->{n2p} || $_->{prefix}]} is expected; $chk->{reason})"; |
512 |
} |
} |
513 |
|
|
514 |
for (@expand) { |
for (@expand) { |
521 |
($e, $_->{qname}, %{$_->{opt}||{}}); |
($e, $_->{qname}, %{$_->{opt}||{}}); |
522 |
ok $chk->{success} && ($_->{xname}->[0] eq $chk->{name} |
ok $chk->{success} && ($_->{xname}->[0] eq $chk->{name} |
523 |
&& $_->{xname}->[1] eq $chk->{local_name}), |
&& $_->{xname}->[1] eq $chk->{local_name}), |
524 |
qq(<$chk->{name}> (should be <$_->{xname}->[0]>), "$chk->{local_name}" (should be "$_->{xname}->[1]") (prefix "$chk->{prefix}"; $chk->{reason})); |
qq(QName->expand: <$chk->{name}> (should be <$_->{xname}->[0]>), "$chk->{local_name}" (should be "$_->{xname}->[1]") (prefix "$chk->{prefix}"; $chk->{reason})); |
525 |
} |
} |
526 |
|
|
527 |
for (@expand) { |
for (@expand) { |
532 |
} |
} |
533 |
my $chk = Message::Markup::XML::QName::expanded_name_to_qname |
my $chk = Message::Markup::XML::QName::expanded_name_to_qname |
534 |
($e, $_->{xname}->[0], $_->{xname}->[1], %{$_->{opt}||{}}); |
($e, $_->{xname}->[0], $_->{xname}->[1], %{$_->{opt}||{}}); |
535 |
ok $chk->{success} && ($_->{qname} eq $chk->{qname}), $chk->{reason}; |
ok $chk->{success} && ($_->{qname} eq $chk->{qname}), 'Expand->QName: '.$chk->{reason}; |
536 |
} |
} |
537 |
|
|
538 |
print $e; |
#print $e; |