| @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); |
| } |
| |