use strict;
use Test::More;
+use Test::Deep;
use HTTP::Body;
use HTTP::Request::Common;
use Encode;
use File::Temp qw/ tempdir /;
-my $utf8 = 'test ♥';
-my $shiftjs = 'test テスト';
+my $string_for_utf8 = 'test ♥';
+my $string_in_utf8 = Encode::encode('UTF-8',$string_for_utf8);
+my $string_for_shiftjis = 'test テスト';
+my $string_in_shiftjis = Encode::encode('SHIFT_JIS',$string_for_shiftjis);
my $path = File::Spec->catfile('t', 'utf8.txt');
ok my $req = POST '/root/echo_arg',
arg1 => [
undef, '',
'Content-Type' =>'text/plain; charset=UTF-8',
- 'Content' => Encode::encode('UTF-8', $utf8)],
+ 'Content' => $string_in_utf8, ],
arg2 => [
undef, '',
'Content-Type' =>'text/plain; charset=SHIFT_JIS',
- 'Content' => Encode::encode('SHIFT_JIS', $shiftjs)],
+ 'Content' => $string_in_shiftjis, ],
arg2 => [
undef, '',
'Content-Type' =>'text/plain; charset=SHIFT_JIS',
- 'Content' => Encode::encode('SHIFT_JIS', $shiftjs)],
+ 'Content' => $string_in_shiftjis, ],
file => [
"$path", Encode::encode_utf8('♥ttachment.txt'), 'Content-Type' =>'text/html; charset=UTF-8'
],
}
is $body->param->{'arg0'}, 'helloworld';
-is Encode::decode('UTF-8', $body->param->{'arg1'}), $utf8;
-is Encode::decode('SHIFT_JIS', $body->param->{'arg2'}[0]), $shiftjs;
+is $body->param->{'arg1'}, $string_in_utf8;
+is $body->param->{'arg2'}[0], $string_in_shiftjis;
+is $body->param->{'arg2'}[1], $string_in_shiftjis;
-is $body->part_data->{'arg0'}->{data}, 'helloworld';
-is Encode::decode('UTF-8', $body->part_data->{'arg1'}->{data}), $utf8;
-is Encode::decode('SHIFT_JIS', $body->part_data->{'arg2'}[0]->{data}), $shiftjs;
+cmp_deeply(
+ $body->part_data->{'arg0'},
+ {
+ data => 'helloworld',
+ headers => {
+ 'Content-Disposition' => re(qr{^form-data\b}),
+ },
+ done => 1,
+ name => 'arg0',
+ size => 10,
+ },
+ 'arg0 part data correct',
+);
+cmp_deeply(
+ $body->part_data->{'arg1'},
+ {
+ data => $string_in_utf8,
+ headers => {
+ 'Content-Disposition' => re(qr{^form-data\b}),
+ 'Content-Type' => 'text/plain; charset=UTF-8',
+ },
+ done => 1,
+ name => 'arg1',
+ size => length($string_in_utf8),
+ },
+ 'arg1 part data correct',
+);
+
+cmp_deeply(
+ $body->part_data->{'arg2'},
+ [
+ ({
+ data => $string_in_shiftjis,
+ headers => {
+ 'Content-Disposition' => re(qr{^form-data\b}),
+ 'Content-Type' => 'text/plain; charset=SHIFT_JIS',
+ },
+ done => 1,
+ name => 'arg2',
+ size => length($string_in_shiftjis),
+ }) x 2,
+ ],
+ 'arg2 part data correct',
+);
done_testing;