1 module rfc5322; 2 3 public import std.datetime.systime; 4 public import std.net.isemail; 5 public import vibe.inet.message; 6 7 version (unittest) 8 { 9 void safelog(string msg) @trusted @nogc nothrow 10 { 11 import core.stdc.stdio : printf; 12 13 printf("%.*s\n", msg.length, &msg[0]); 14 } 15 16 void testFunctionality()() 17 { 18 import vibe.stream.memory; 19 20 ubyte[] hdr = cast(ubyte[]) "A: a \r\nB: \r\nC:\r\n\tc\r\n\r\n".dup; 21 InetHeaderMap map; 22 parseRFC5322Header(createMemoryStream(hdr), map); 23 assert(map.length == 3); 24 assert(map["A"] == "a"); 25 assert(map["B"] == ""); 26 assert(map["C"] == " c"); 27 } 28 29 unittest 30 { 31 testFunctionality(); 32 safelog("package works"); 33 } 34 35 @safe unittest 36 { 37 static if (__traits(compiles, testFunctionality())) 38 { 39 pragma(msg, "package is @safe"); 40 } 41 else 42 { 43 pragma(msg, "package is not @safe"); 44 } 45 } 46 47 @nogc unittest 48 { 49 static if (__traits(compiles, testFunctionality())) 50 { 51 pragma(msg, "package is @nogc"); 52 } 53 else 54 { 55 pragma(msg, "package is not @nogc"); 56 } 57 } 58 59 nothrow unittest 60 { 61 static if (__traits(compiles, testFunctionality())) 62 { 63 pragma(msg, "package is nothrow"); 64 } 65 else 66 { 67 pragma(msg, "package is not nothrow"); 68 } 69 } 70 }