more test cases
John Napiorkowski [Wed, 7 Jan 2015 18:40:03 +0000 (12:40 -0600)]
t/utf_incoming.t

index 3b8e965..373a428 100644 (file)
@@ -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("<p>This is base-link action ♥ ${\$c->req->args->[0]}</p>");
 
@@ -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,16 @@ 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('Shift_JIS'));
+    $c->response->body("テスト");
+  }
+
   package MyApp;
   use Catalyst;
 
-  # Default encoding is now UTF-8
-  # MyApp->config(encoding=>'UTF-8');
-
   Test::More::ok(MyApp->setup, 'setup app');
 }
 
@@ -268,6 +275,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 +363,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';