blob: ebc9506cd6d820b195a9077dda4df4beb07edd42 [file] [log] [blame]
#!perl
use strict;
use lib qw(..);
use utf8; # Test results are in UTF-8.
use Test::More;
use FlashVideo::Utils;
use Encode;
my @tests = (
[ <<EOF, "text/html", "foo bar"
<Title>foo
bar</title>
EOF
],
[ <<EOF, "text/html; charset=iso-8859-1", "café"
<title
>caf\x{e9}</title>
EOF
],
[ <<EOF, "text/html; charset=windows-1251", "Российская Федерация"
<title>\xD0\xEE\xF1\xF1\xE8\xE9\xF1\xEA\xE0\xFF\x20\xD4\xE5\xE4\xE5\xF0\xE0\xF6\xE8\xFF</title>
EOF
],
[ <<EOF, "text/html", "Российская Федерация"
<META http-equiv=content-type content="text/html; CHARSET=windows-1251" />
<title>\xD0\xEE\xF1\xF1\xE8\xE9\xF1\xEA\xE0\xFF\x20\xD4\xE5\xE4\xE5\xF0\xE0\xF6\xE8\xFF</title>
EOF
],
[ <<EOF, "text/html", "NTTドコモのオフィシャルウェブサイトです。"
<title>\x4E\x54\x54\x83\x68\x83\x52\x83\x82\x82\xCC\x83\x49\x83\x74\x83\x42\x83\x56\x83\x83\x83\x8B\x83\x45\x83\x46\x83\x75\x83\x54\x83\x43\x83\x67\x82\xC5\x82\xB7\x81\x42</title>
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
EOF
]
);
# These aren't actually in UTF-8, hence the evilness.
Encode::_utf8_off($_->[0]) for @tests;
{ # Mock version of WWW::Mechanize
package MockMech;
use base "FlashVideo::Mechanize";
sub _make_request {
my($self, $req) = @_;
my $num = $req->uri->host;
my $res = HTTP::Response->new(200, "OK",
[ "Content-type" => $tests[$num]->[1] ],
$tests[$num]->[0]);
$res->request($req);
return $res;
}
}
# Start tests..
plan tests => scalar @tests;
my $mech = MockMech->new;
for my $i(0 .. $#tests) {
$mech->get("http://$i");
is(extract_title($mech), $tests[$i]->[2]);
}