module tests.property; import cerealed; import unit_threaded; @Types!(bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double, char, wchar, dchar, ubyte[], ushort[], int[], long[], float[], double[]) void testEncodeDecodeProperty(T)() @safe { check!((T val) => val.cerealise.decerealise!T == val); } @("array with non-default length type") @safe unittest { check!((ubyte[] arr) { if(arr.length > ubyte.max) { return true; } auto enc = Cerealiser(); enc.grain!ubyte(arr); enc.bytes.length.shouldEqual(arr.length + ubyte.sizeof); auto dec = Decerealiser(enc.bytes); ubyte[] arr2; dec.grain!ubyte(arr2); return arr2 == arr; }); }