summaryrefslogtreecommitdiff
path: root/t/escape.t
diff options
context:
space:
mode:
Diffstat (limited to 't/escape.t')
-rw-r--r--t/escape.t37
1 files changed, 37 insertions, 0 deletions
diff --git a/t/escape.t b/t/escape.t
new file mode 100644
index 0000000..05b8022
--- /dev/null
+++ b/t/escape.t
@@ -0,0 +1,37 @@
+use strict;
+use warnings;
+
+use Test::More tests => 12;
+
+use URI::Escape;
+
+is uri_escape("|abcå"), "%7Cabc%E5";
+
+is uri_escape("abc", "b-d"), "a%62%63";
+
+# New escapes in RFC 3986
+is uri_escape("~*'()"), "~%2A%27%28%29";
+is uri_escape("<\">"), "%3C%22%3E";
+
+is uri_escape(undef), undef;
+
+is uri_unescape("%7Cabc%e5"), "|abcå";
+
+is_deeply [uri_unescape("%40A%42", "CDE", "F%47H")], [qw(@AB CDE FGH)];
+
+
+use URI::Escape qw(%escapes);
+
+is $escapes{"%"}, "%25";
+
+
+use URI::Escape qw(uri_escape_utf8);
+
+is uri_escape_utf8("|abcå"), "%7Cabc%C3%A5";
+
+skip "Perl 5.8.0 or higher required", 3 if $] < 5.008;
+
+ok !eval { print uri_escape("abc" . chr(300)); 1 };
+like $@, qr/^Can\'t escape \\x\{012C\}, try uri_escape_utf8\(\) instead/;
+
+is uri_escape_utf8(chr(0xFFF)), "%E0%BF%BF";