Test encoding of data which has a length which CANNOT be cleanly encoded. This typically means that there's padding.
// Note: encoded data leaked there. // 1 byte { enum data = cast(immutable(ubyte)[])"A"; assert(data.encodeBase64 == "QQ=="); } // 2 bytes { enum data = cast(immutable(ubyte)[])"AB"; assert(data.encodeBase64 == "QUI="); } // 2 bytes { enum data = [0xFF, 0xFF]; assert(data.encodeBase64 == "//8="); } // 4 bytes { enum data = [0xDE, 0xAD, 0xBA, 0xBE]; assert(data.encodeBase64 == "3q26vg=="); } // 37 bytes { enum data = cast(immutable(ubyte)[])"A Very Very Very Very Large Test Blob"; assert(data.encodeBase64 == "QSBWZXJ5IFZlcnkgVmVyeSBWZXJ5IExhcmdlIFRlc3QgQmxvYg=="); }
Test nogc encoding
{
enum data = cast(immutable(ubyte)[])"A Very Very Very Very Large Test Blob";
Vec!ubyte outBuf;
data.encodeBase64(outBuf);
assert(outBuf[] == "QSBWZXJ5IFZlcnkgVmVyeSBWZXJ5IExhcmdlIFRlc3QgQmxvYg==");
}
{
enum data = cast(immutable(ubyte)[])"abc123!?$*&()'-=@~";
Vec!ubyte outBuf;
data.encodeBase64(outBuf);
assert(outBuf[] == "YWJjMTIzIT8kKiYoKSctPUB+");
}Make sure we can decode what we encode.
// Test an example string { enum data = cast(immutable(ubyte)[])"abc123!?$*&()'-=@~"; assert(data.encodeBase64.decodeBase64 == data); } // Test an example from Ion data { enum data = cast(immutable(ubyte)[])"a b c d e f g h i j k l m n o p q r s t u v w x y z"; assert(data.encodeBase64.decodeBase64 == data); }
Encode a ubyte array as Base64, placing the result onto an Vec!ubyte.