summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-09-29 00:00:58 -0500
committerJesse Luehrs <doy@tozt.net>2012-09-29 00:00:58 -0500
commitc4e5d70df578b0e0ad30fa353738d6104306badd (patch)
treef3311dcd07e187a9f44334ffb3446cd2c9059b51
parentbe74ecf8a7ccda39a401b832f2044c9d2e334541 (diff)
downloadweb-request-c4e5d70df578b0e0ad30fa353738d6104306badd.tar.gz
web-request-c4e5d70df578b0e0ad30fa353738d6104306badd.zip
test the writer api
-rw-r--r--t/response-streaming.t64
1 files changed, 64 insertions, 0 deletions
diff --git a/t/response-streaming.t b/t/response-streaming.t
index 55caefe..51f6aea 100644
--- a/t/response-streaming.t
+++ b/t/response-streaming.t
@@ -60,6 +60,70 @@ use Web::Response;
);
}
+{
+ my $res = Web::Response->new(sub {
+ my $responder = shift;
+ my $writer = $responder->([200, []]);
+ $writer->write("Hello");
+ $writer->write(" ");
+ $writer->write("world");
+ $writer->close;
+ });
+ my $psgi_res = $res->finalize;
+ ok(ref($psgi_res) eq 'CODE', "got a coderef");
+
+ is_deeply(
+ resolve_response($psgi_res),
+ [ 200, [], ["Hello", " ", "world"] ],
+ "got the right response"
+ );
+}
+
+{
+ use utf8;
+
+ my $req = Web::Request->new_from_env({});
+
+ my $res = $req->new_response(sub {
+ my $responder = shift;
+ my $writer = $responder->([200, []]);
+ $writer->write("ca");
+ $writer->write("fé");
+ $writer->close;
+ });
+ my $psgi_res = $res->finalize;
+ ok(ref($psgi_res) eq 'CODE', "got a coderef");
+
+ is_deeply(
+ resolve_response($psgi_res),
+ [ 200, [], ["ca", "f\xe9"] ],
+ "got the right response"
+ );
+}
+
+{
+ use utf8;
+
+ my $req = Web::Request->new_from_env({});
+ $req->encoding('UTF-8');
+
+ my $res = $req->new_response(sub {
+ my $responder = shift;
+ my $writer = $responder->([200, []]);
+ $writer->write("ca");
+ $writer->write("fé");
+ $writer->close;
+ });
+ my $psgi_res = $res->finalize;
+ ok(ref($psgi_res) eq 'CODE', "got a coderef");
+
+ is_deeply(
+ resolve_response($psgi_res),
+ [ 200, [], ["ca", "f\xc3\xa9"] ],
+ "got the right response"
+ );
+}
+
sub resolve_response {
my ($psgi_res) = @_;