| @safe unittest | |
| { | |
| import std.uri; | |
| import std.exception : assertThrown; | |
| assertThrown!URIException("%ab".decode); | |
| } | |
| @safe unittest | |
| { | |
| import std.uri; | |
| assert("foo%20bar".decode == "foo bar"); | |
| assert("%3C%3E.@.%E2%84%A2".decode == "<>.@.™"); | |
| assert("foo&/".decode == "foo&/"); | |
| assert("!@#$&*(".decode == "!@#$&*("); | |
| } | |
| @safe unittest | |
| { | |
| import std.uri; | |
| assert("foo%2F%26".decodeComponent == "foo/&"); | |
| assert("dl%C3%A4ng%20r%C3%B6cks".decodeComponent == "dläng röcks"); | |
| assert("!%40%23%24%25%5E%26*(".decodeComponent == "!@#$%^&*("); | |
| } | |
| @safe unittest | |
| { | |
| import std.uri; | |
| assert("foo bar".encode == "foo%20bar"); | |
| assert("<>.@.™".encode == "%3C%3E.@.%E2%84%A2"); | |
| assert("foo/#?a=1&b=2".encode == "foo/#?a=1&b=2"); | |
| assert("dlang+rocks!".encode == "dlang+rocks!"); | |
| assert("!@#$%^&*(".encode == "!@#$%25%5E&*("); | |
| } | |
| @safe unittest | |
| { | |
| import std.uri; | |
| assert("!@#$%^&*(".encodeComponent == "!%40%23%24%25%5E%26*("); | |
| assert("<>.@.™".encodeComponent == "%3C%3E.%40.%E2%84%A2"); | |
| assert("foo/&".encodeComponent == "foo%2F%26"); | |
| assert("dläng röcks".encodeComponent == "dl%C3%A4ng%20r%C3%B6cks"); | |
| assert("dlang+rocks!".encodeComponent == "dlang%2Brocks!"); | |
| } | |
| @safe pure unittest | |
| { | |
| import std.uri; | |
| string s1 = "http://www.digitalmars.com/~fred/fredsRX.html#foo end!"; | |
| assert(uriLength(s1) == 49); | |
| string s2 = "no uri here"; | |
| assert(uriLength(s2) == -1); | |
| assert(uriLength("issue 14924") < 0); | |
| } | |
| @safe pure unittest | |
| { | |
| import std.uri; | |
| string s1 = "my.e-mail@www.example-domain.com with garbage added"; | |
| assert(emailLength(s1) == 32); | |
| string s2 = "no email address here"; | |
| assert(emailLength(s2) == -1); | |
| assert(emailLength("issue 14924") < 0); | |
| } | |