1 module rfc4648;
2 
3 public import base32;
4 public import std.base64;
5 
6 version (unittest)
7 {
8 	void safelog(string msg) @trusted @nogc nothrow
9 	{
10 		import core.stdc.stdio : printf;
11 
12 		printf("%.*s\n", msg.length, &msg[0]);
13 	}
14 
15 	void testFunctionality()()
16 	{
17 		ubyte[6] data = [0xde, 0xad, 0xbe, 0xef, 0x01, 0x23];
18 		assert(Base32.encode(data[]) == "32W353YBEM======");
19 
20 		assert(Base32.decode("32W353YBEM======") == [
21 				0xde, 0xad, 0xbe, 0xef, 0x01, 0x23
22 				]);
23 	}
24 
25 	unittest
26 	{
27 		testFunctionality();
28 		safelog("package works");
29 	}
30 
31 	@safe unittest
32 	{
33 		static if (__traits(compiles, testFunctionality()))
34 		{
35 			pragma(msg, "package is @safe");
36 		}
37 		else
38 		{
39 			pragma(msg, "package is not @safe");
40 		}
41 	}
42 
43 	@nogc unittest
44 	{
45 		static if (__traits(compiles, testFunctionality()))
46 		{
47 			pragma(msg, "package is @nogc");
48 		}
49 		else
50 		{
51 			pragma(msg, "package is not @nogc");
52 		}
53 	}
54 
55 	nothrow unittest
56 	{
57 		static if (__traits(compiles, testFunctionality()))
58 		{
59 			pragma(msg, "package is nothrow");
60 		}
61 		else
62 		{
63 			pragma(msg, "package is not nothrow");
64 		}
65 	}
66 }