X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=t%2Futf_incoming.t;h=638cef5a1555ea2ab1830d0226494c86794e3187;hp=3b8e965f2fb8fb784f4e13498b61365e01f0c5ae;hb=d63cc9c82b21555490c13a14f6a586764b200bfa;hpb=c566191065a603f466e5066fdd2c0337ed080a75 diff --git a/t/utf_incoming.t b/t/utf_incoming.t index 3b8e965..638cef5 100644 --- a/t/utf_incoming.t +++ b/t/utf_incoming.t @@ -62,6 +62,8 @@ use JSON::MaybeXS; Test::More::is $c->req->args->[0], '♥'; Test::More::is $c->req->captures->[0], '♥'; + Test::More::is $arg, '♥'; + Test::More::is length($arg), 1, "got length of one"; $c->response->body("

This is base-link action ♥ ${\$c->req->args->[0]}

"); @@ -131,6 +133,7 @@ use JSON::MaybeXS; my $post = $c->req->body_data; Test::More::is $post->{'♥'}, '♥♥'; + Test::More::is length($post->{'♥'}), 2; $c->response->content_type('application/json'); # Encode JSON also encodes to a UTF-8 encoded, binary string. This is why we don't @@ -161,12 +164,25 @@ use JSON::MaybeXS; $c->response->body(Compress::Zlib::memGzip(Encode::encode_utf8("manual_1 ♥"))); } + sub override_encoding :Local { + my ($self, $c) = @_; + $c->res->content_type('text/plain'); + $c->encoding(Encode::find_encoding('UTF-8')); + $c->encoding(Encode::find_encoding('Shift_JIS')); + $c->response->body("テスト"); + } + + sub stream_write_error :Local { + my ($self, $c) = @_; + $c->response->content_type('text/html'); + $c->response->write("

This is stream_write action ♥

"); + $c->encoding(Encode::find_encoding('Shift_JIS')); + $c->response->write("

This is stream_write action ♥

"); + } + package MyApp; use Catalyst; - # Default encoding is now UTF-8 - # MyApp->config(encoding=>'UTF-8'); - Test::More::ok(MyApp->setup, 'setup app'); } @@ -268,6 +284,11 @@ use Catalyst::Test 'MyApp'; is $c->req->query_parameters->{'♥'}, '♥♥'; is $c->req->body_parameters->{'♥'}, '♥♥'; is $c->req->parameters->{'♥'}[0], '♥♥'; #combined with query and body + is $c->req->args->[0], '♥'; + is length($c->req->parameters->{'♥'}[0]), 2; + is length($c->req->query_parameters->{'♥'}), 2; + is length($c->req->body_parameters->{'♥'}), 2; + is length($c->req->args->[0]), 1; is $res->content_charset, 'UTF-8'; } } @@ -351,6 +372,17 @@ use Catalyst::Test 'MyApp'; } { + ok my $res = request "/root/override_encoding"; + ok my $enc = Encode::find_encoding('SHIFT_JIS'); + + is $res->code, 200, 'OK'; + is $enc->decode($res->content), "テスト", 'correct body'; + is $res->content_length, 6, 'correct length'; # Bytes over the wire + is length($enc->decode($res->content)), 3; + is $res->content_charset, 'SHIFT_JIS'; +} + +{ my $res = request "/root/manual_1"; is $res->code, 200, 'OK'; @@ -372,6 +404,14 @@ SKIP: { is $res->content_charset, 'UTF-8'; } +{ + my $res = request "/root/stream_write_error"; + + is $res->code, 200, 'OK'; + like decode_utf8($res->content), qr[

This is stream_write action ♥