const std = @import("std"); const msgpack = @import("msgpack"); const serialise = msgpack.serialise; fn test_string(expected: []const u8, s: []const u8) !void { const alloc = std.testing.allocator; const bytes = try serialise(alloc, .{ .string = s }); defer alloc.free(bytes); try std.testing.expectEqualSlices(u8, expected, bytes); } test "fixstr" { const bytes = [_]u8{ 0b101_00000 | 0x03, 'A', 'B', 'C' }; try test_string(&bytes, "ABC"); } test "empty str" { const bytes = [_]u8{0b101_00000}; try test_string(&bytes, ""); } test "string 4" { var bytes: [2 + 255]u8 = undefined; bytes[0] = 0xd9; bytes[1] = 0xff; for (bytes[2..]) |*c| { c.* = 'A'; } try test_string(&bytes, "A" ** 255); } // test "string 5" { // var bytes: [3 + 256]u8 = undefined; // bytes[0] = 0xda; // bytes[1] = 0x01; // bytes[2] = 0x00; // for (bytes[3..]) |*c| { // c.* = 'A'; // } // try test_string(&bytes, "A" ** 256); // } // test "string 6" { // var bytes: [3 + 65535]u8 = undefined; // bytes[0] = 0xda; // bytes[1] = 0xff; // bytes[2] = 0xff; // for (bytes[3..]) |*c| { // c.* = 'A'; // } // try test_string(&bytes, "A" ** 65535); // } // test "string 7" { // var bytes: [5 + 65536]u8 = undefined; // bytes[0] = 0xdb; // bytes[1] = 0x00; // bytes[2] = 0x01; // bytes[3] = 0x00; // bytes[4] = 0x00; // for (bytes[5..]) |*c| { // c.* = 'A'; // } // try test_string(&bytes, "A" ** 65536); // } // test "string 8" { // try test_string(&[_]u8{ 0xaa, 0x6c, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65 }, "le message"); // }