From a2af7d674d1e3298517ba1e18b0e34477a0e28b0 Mon Sep 17 00:00:00 2001 From: berni44 <56265324+berni44@users.noreply.github.com> Date: Thu, 17 Oct 2019 09:22:45 +0200 Subject: [PATCH] std.uri: Add unittests for 100% code coverage. (#7220) std.uri: Add unittests for 100% code coverage. merged-on-behalf-of: Sebastian Wilzbach --- std/uri.d | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/std/uri.d b/std/uri.d index 8f4536d63..9a4947d8d 100644 --- a/std/uri.d +++ b/std/uri.d @@ -172,6 +172,18 @@ private string URI_Encode(dstring str, uint unescapedSet) @safe pure return R[0 .. Rlen].idup; } +@safe pure unittest +{ + import std.exception : assertThrown; + + assert(URI_Encode("", 0) == ""); + assert(URI_Encode(URI_Decode("%F0%BF%BF%BF", 0), 0) == "%F0%BF%BF%BF"); + dstring a; + a ~= cast(dchar) 0xFFFFFFFF; + assertThrown(URI_Encode(a, 0)); + assert(URI_Encode("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0).length == 3 * 60); +} + private uint ascii2hex(dchar c) @nogc @safe pure nothrow { return (c <= '9') ? c - '0' : @@ -278,6 +290,22 @@ if (isSomeChar!Char) return R[0 .. Rlen].idup; } +@safe pure unittest +{ + import std.exception : assertThrown; + + assert(URI_Decode("", 0) == ""); + assertThrown!URIException(URI_Decode("%", 0)); + assertThrown!URIException(URI_Decode("%xx", 0)); + assertThrown!URIException(URI_Decode("%FF", 0)); + assertThrown!URIException(URI_Decode("%C0", 0)); + assertThrown!URIException(URI_Decode("%C0000000", 0)); + assertThrown!URIException(URI_Decode("%C0%xx0000", 0)); + assertThrown!URIException(URI_Decode("%C0%C00000", 0)); + assertThrown!URIException(URI_Decode("%F7%BF%BF%BF", 0)); + assert(URI_Decode("%23", URI_Hash) == "%23"); +} + /************************************* * Decodes the URI string encodedURI into a UTF-8 string and returns it. * Escape sequences that resolve to reserved URI characters are not replaced. @@ -480,6 +508,11 @@ if (isSomeChar!Char) assert(uriLength("issue 14924") < 0); } +@safe pure nothrow @nogc unittest +{ + assert(uriLength("") == -1); + assert(uriLength("https://www") == -1); +} /*************************** * Does string s[] start with an email address? @@ -496,6 +529,9 @@ if (isSomeChar!Char) ptrdiff_t i; + if (s.length == 0) + return -1; + if (!isAlpha(s[0])) return -1; @@ -594,3 +630,13 @@ if (isSomeChar!Char) assert(encoded2 == encode(decoded2).to!StringType); }} } + +@safe pure nothrow @nogc unittest +{ + assert(emailLength("") == -1); + assert(emailLength("@") == -1); + assert(emailLength("abcd") == -1); + assert(emailLength("blah@blub") == -1); + assert(emailLength("blah@blub.") == -1); + assert(emailLength("blah@blub.domain") == -1); +}