$args =~ s/([^$URI::uric])/$URI::Escape::escapes{$1}/go;
# re-attach fragment on the end of everything after adding params
- $args .= "#$fragment" if $fragment;
+ $query .= "#$fragment" if $fragment;
my $res = bless(\"${base}${args}${query}", $class);
$res;
is(
Catalyst::uri_for( $context, '/bar#fragment', { param1 => 'value1' } )->as_string,
'http://127.0.0.1/foo/bar?param1=value1#fragment',
- 'URI for path with fragment and query params'
+ 'URI for path with fragment and query params 1'
);
+
+is(
+ Catalyst::uri_for( $context, '/bar#fragment\x{2620}', { param1 => 'value1' } )->as_string,
+ 'http://127.0.0.1/foo/bar?param1=value1#fragment%5Cx%7B2620%7D',
+ 'URI for path with fragment and query params 2'
+);
+
+
+is(
+ Catalyst::uri_for( $context, '/bar#fragment^%$', { param1 => 'value1' } )->as_string,
+ 'http://127.0.0.1/foo/bar?param1=value1#fragment%5E%25%24',
+ 'URI for path with fragment and query params 3'
+);
+
+
# test with utf-8
is(
Catalyst::uri_for( $context, 'quux', { param1 => "\x{2620}" } )->as_string,