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 }