--- /dev/null
+#!perl\r
+\r
+use strict;\r
+use warnings;\r
+\r
+use FindBin;\r
+use lib "$FindBin::Bin/../../lib";\r
+\r
+use Test::More tests => 18;\r
+use Catalyst::Test 'TestApp';\r
+use Catalyst::Request;\r
+\r
+my $creq;\r
+\r
+# test that the path can be changed\r
+{\r
+ ok( my $response = request('http://localhost/engine/request/uri/change_path'), 'Request' );\r
+ ok( $response->is_success, 'Response Successful 2xx' );\r
+ ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' );\r
+ like( $creq->uri, qr{/my/app/lives/here}, 'URI contains new path' );\r
+}\r
+\r
+# test that path properly removes the base location\r
+{\r
+ ok( my $response = request('http://localhost/engine/request/uri/change_base'), 'Request' );\r
+ ok( $response->is_success, 'Response Successful 2xx' );\r
+ ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' );\r
+ like( $creq->base, qr{/new/location}, 'Base URI contains new location' );\r
+ is( $creq->path, 'engine/request/uri/change_base', 'URI contains correct path' );\r
+}\r
+\r
+# test that base + path is correct\r
+{\r
+ ok( my $response = request('http://localhost/engine/request/uri'), 'Request' );\r
+ ok( $response->is_success, 'Response Successful 2xx' );\r
+ ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' );\r
+ is( $creq->base . $creq->path, $creq->uri, 'Base + Path ok' );\r
+}\r
+\r
+# test that we can use semi-colons as separators\r
+{\r
+ my $parameters = {\r
+ a => [ qw/1 2/ ],\r
+ b => 3,\r
+ };\r
+ \r
+ ok( my $response = request('http://localhost/engine/request/uri?a=1;a=2;b=3'), 'Request' );\r
+ ok( $response->is_success, 'Response Successful 2xx' );\r
+ ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' );\r
+ is( $creq->{uri}->query, 'a=1;a=2;b=3', 'Query string ok' );\r
+ is_deeply( $creq->{parameters}, $parameters, 'Parameters ok' );\r
+} \r