/XML-TreePP/t/46_xml_deref.t
http://xml-treepp.googlecode.com/ · Raku · 122 lines · 115 code · 2 blank · 5 comment · 0 complexity · b6e94aae935e3ed3a2c5f10a77082c29 MD5 · raw file
- # ----------------------------------------------------------------
- # this test script is written in utf8 but does not "use utf8" for 5.005-compatibility
- # ----------------------------------------------------------------
- use strict;
- use Test::More;
- # ----------------------------------------------------------------
- {
- plan tests => 33;
- use_ok('XML::TreePP');
- &test_main();
- }
- # ----------------------------------------------------------------
- sub test_main {
-
- my $src = {};
-
- $src->{Plain} = <<"EOT";
- <root>
- <a>AA</a>
- <z>zz</z>
- <c>©©</c>
- <e>λλ</e>
- <n>??</n>
- <k>??</k>
- </root>
- EOT
-
- $src->{XMLref} = <<"EOT";
- <root>
- <a>AA</a>
- <z>zz</z>
- <c>©©</c>
- <e>ëë</e>
- <n>んん</n>
- <k>漢漢</k>
- </root>
- EOT
-
- $src->{Mixed} = <<"EOT";
- <root>
- <a>AA</a>
- <z>zz</z>
- <c>©©</c>
- <e>λë</e>
- <n>?ん</n>
- <k>?漢</k>
- </root>
- EOT
-
- foreach my $key ( keys %$src ) {
- phase2( "$key octets", $src->{$key} );
- }
- }
- # ----------------------------------------------------------------
- sub phase2 {
- my $subject = shift;
- my $srcxml = shift;
- my $srcref = ( $srcxml =~ /&#\w+;/ );
-
- foreach my $xml_deref ( 0, 1 ) {
- my $subj3 = $subject .( $xml_deref ? ' xml_deref' : '' );
- my $opt = {
- xml_deref => $xml_deref,
- };
- my $tpp = XML::TreePP->new( %$opt );
- my $tree = $tpp->parse( $srcxml );
- if ( $xml_deref ) {
- check_octets( $subj3, $tree );
- } else {
- if ( $srcref ) {
- check_has_ref( $subj3, $tree );
- } else {
- check_no_ref( $subj3, $tree );
- }
- }
- }
- }
- # ----------------------------------------------------------------
- sub check_has_ref {
- my $subject = shift;
- my $tree = shift;
- my $root = $tree->{root};
-
- my $HAS_REF = qr/&#\w+;/;
- # \x00-\x7F is always dereferenced.
- # like( $root->{a}, $HAS_REF, "$subject has_ref: a" );
- # like( $root->{z}, $HAS_REF, "$subject has_ref: z" );
- like( $root->{c}, $HAS_REF, "$subject has_ref: c" );
- like( $root->{e}, $HAS_REF, "$subject has_ref: e" );
- like( $root->{n}, $HAS_REF, "$subject has_ref: n" );
- like( $root->{k}, $HAS_REF, "$subject has_ref: k" );
- }
- # ----------------------------------------------------------------
- sub check_no_ref {
- my $subject = shift;
- my $tree = shift;
- my $root = $tree->{root};
-
- my $HAS_REF = qr/&#\w+;/;
- unlike( $root->{a}, $HAS_REF, "$subject no_ref: a" );
- unlike( $root->{z}, $HAS_REF, "$subject no_ref: z" );
- unlike( $root->{c}, $HAS_REF, "$subject no_ref: c" );
- unlike( $root->{e}, $HAS_REF, "$subject no_ref: e" );
- unlike( $root->{n}, $HAS_REF, "$subject no_ref: n" );
- unlike( $root->{k}, $HAS_REF, "$subject no_ref: k" );
- }
- # ----------------------------------------------------------------
- sub check_octets {
- my $subject = shift;
- my $tree = shift;
- my $root = $tree->{root};
-
- is( $root->{a}, 'AA', "$subject ok: a" );
- is( $root->{z}, 'zz', "$subject ok: z" );
- is( $root->{c}, '©©', "$subject ok: c" );
- is( $root->{e}, 'λλ', "$subject ok: e" );
- is( $root->{n}, '??', "$subject ok: n" );
- is( $root->{k}, '??', "$subject ok: k" );
- }
- # ----------------------------------------------------------------
- ;1;
- # ----------------------------------------------------------------