1 import std.algorithm.comparison : equal; 2 3 void ok(T)(T x, const(ubyte[]) expected) { 4 BinBuffer encoded; 5 encode(encoded, x); 6 assert(equal(encoded.serialize, expected)); 7 assert(calc_size(x) == expected.length); 8 assert(calc_size(expected) == expected.length); 9 const decoded = decode!T(expected); 10 assert(decoded.size == expected.length); 11 assert(decoded.value == x); 12 } 13 14 { 15 16 const(ubyte[5]) buffer_0 = [255, 255, 255, 255, 7]; 17 ok!int(int.max, buffer_0); 18 const(ubyte[1]) buffer_1 = [27]; 19 ok!ulong(27, buffer_1); 20 const(ubyte[2]) buffer_2 = [167, 21]; 21 ok!ulong(2727, buffer_2); 22 const(ubyte[3]) buffer_3 = [215, 210, 16]; 23 ok!ulong(272727, buffer_3); 24 const(ubyte[4]) buffer_4 = [151, 204, 128, 13]; 25 ok!ulong(27272727, buffer_4); 26 const(ubyte[5]) buffer_5 = [181, 202, 212, 168, 5]; 27 ok!ulong(1427449141, buffer_5); 28 const(ubyte[10]) buffer_6 = [ 29 255, 255, 255, 255, 255, 255, 255, 255, 255, 1 30 ]; 31 ok!ulong(ulong.max, buffer_6); 32 } 33 34 { 35 const(ubyte[1]) buffer_0 = [127]; 36 ok!int(-1, buffer_0); 37 const(ubyte[5]) buffer_1 = [255, 255, 255, 255, 7]; 38 ok!int(int.max, buffer_1); 39 const(ubyte[5]) buffer_2 = [128, 128, 128, 128, 120]; 40 ok!int(int.min, buffer_2); 41 const(ubyte[5]) buffer_3 = [255, 255, 255, 255, 7]; 42 ok!int(int.max, buffer_3); 43 const(ubyte[5]) buffer_4 = [128, 128, 128, 128, 120]; 44 ok!long(int.min, buffer_4); 45 const(ubyte[5]) buffer_5 = [255, 255, 255, 255, 7]; 46 ok!long(int.max, buffer_5); 47 48 const(ubyte[1]) buffer_6 = [27]; 49 ok!long(27, buffer_6); 50 const(ubyte[2]) buffer_7 = [167, 21]; 51 ok!long(2727, buffer_7); 52 const(ubyte[3]) buffer_8 = [215, 210, 16]; 53 ok!long(272727, buffer_8); 54 const(ubyte[4]) buffer_9 = [151, 204, 128, 13]; 55 ok!long(27272727, buffer_9); 56 57 const(ubyte[5]) buffer_10 = [181, 202, 212, 168, 5]; 58 ok!long(1427449141, buffer_10); 59 60 const(ubyte[3]) buffer_11 = [192, 187, 120]; 61 ok!int(-123456, buffer_11); 62 63 const(ubyte[1]) buffer_12 = [101]; 64 ok!long(-27, buffer_12); 65 const(ubyte[2]) buffer_13 = [217, 106]; 66 ok!long(-2727, buffer_13); 67 const(ubyte[3]) buffer_14 = [169, 173, 111]; 68 ok!long(-272727, buffer_14); 69 const(ubyte[4]) buffer_15 = [233, 179, 255, 114]; 70 ok!long(-27272727, buffer_15); 71 const(ubyte[5]) buffer_16 = [203, 181, 171, 215, 122]; 72 ok!long(-1427449141L, buffer_16); 73 74 const(ubyte[1]) buffer_17 = [127]; 75 ok!long(-1L, buffer_17); 76 77 const(ubyte[10]) buffer_18 = [ 78 254, 255, 255, 255, 255, 255, 255, 255, 255, 0 79 ]; 80 ok!long(long.max - 1, buffer_18); 81 const(ubyte[10]) buffer_19 = [ 82 255, 255, 255, 255, 255, 255, 255, 255, 255, 0 83 ]; 84 ok!long(long.max, buffer_19); 85 const(ubyte[10]) buffer_20 = [ 86 129, 128, 128, 128, 128, 128, 128, 128, 128, 127 87 ]; 88 ok!long(long.min + 1, buffer_20); 89 const(ubyte[10]) buffer_21 = [ 90 128, 128, 128, 128, 128, 128, 128, 128, 128, 127 91 ]; 92 ok!long(long.min, buffer_21); 93 } 94 95 { // Bug fix 96 assert(calc_size(-77) == 2); 97 const(ubyte[2]) buffer_22 = [179, 127]; 98 ok!int(-77, buffer_22); 99 }