# ----------------------------------------------------------------
use strict;
use Test::More;
# ----------------------------------------------------------------
{
local $@;
eval { require 5.008001; };
plan skip_all => 'Perl 5.8.1 is required.' if $@;
}
{
local $@;
eval { require XML::TreePP; };
plan skip_all => 'XML::TreePP is not loaded.' if $@;
}
{
my $ver = ( $XML::TreePP::VERSION =~ /^(\d+\.\d+)/ )[0];
my $chk = ( $ver >= 0.37 );
plan skip_all => "XML::TreePP $XML::TreePP::VERSION < 0.37" unless $chk;
plan tests => 20;
ok( $chk, 'XML::TreePP '.$ver );
use_ok('XML::FeedPP');
&test_main();
}
# ----------------------------------------------------------------
sub test_main {
my $rss = <<'EOT';
<rss version="2.0">
<channel>
<item>
<title>©©</title>
</item>
<item>
<title>ëë</title>
</item>
<item>
<title>んん</title>
</item>
<item>
<title>漢漢</title>
</item>
</channel>
</rss>
EOT
my $feedA = XML::FeedPP->new( $rss, xml_deref => 1, utf8_flag => 0 );
my @itemA = $feedA->get_item;
is( (scalar @itemA), 4, 'item count' );
ok( ! utf8::is_utf8($itemA[0]->title), "is_octets: c" );
ok( ! utf8::is_utf8($itemA[1]->title), "is_octets: e" );
ok( ! utf8::is_utf8($itemA[2]->title), "is_octets: n" );
ok( ! utf8::is_utf8($itemA[3]->title), "is_octets: k" );
is( $itemA[0]->title, "\xC2\xA9" x 2, "string: c" );
is( $itemA[1]->title, "\xC3\xAB" x 2, "string: e" );
is( $itemA[2]->title, "\xE3\x82\x93" x 2, "string: n" );
is( $itemA[3]->title, "\xE6\xBC\xA2" x 2, "string: k" );
my $feedB = XML::FeedPP->new( $rss, xml_deref => 1, utf8_flag => 1 );
my @itemB = $feedB->get_item;
is( (scalar @itemB), 4, 'item count' );
ok( utf8::is_utf8($itemB[0]->title), "is_utf8: c" );
ok( utf8::is_utf8($itemB[1]->title), "is_utf8: e" );
ok( utf8::is_utf8($itemB[2]->title), "is_utf8: n" );
ok( utf8::is_utf8($itemB[3]->title), "is_utf8: k" );
is( $itemB[0]->title, chr(0x00A9) x 2, "string: c" );
is( $itemB[1]->title, chr(0x00EB) x 2, "string: e" );
is( $itemB[2]->title, chr(0x3093) x 2, "string: n" );
is( $itemB[3]->title, chr(0x6F22) x 2, "string: k" );
}
# ----------------------------------------------------------------