83 lines
2.1 KiB
Zig
83 lines
2.1 KiB
Zig
|
|
const std = @import("std");
|
||
|
|
|
||
|
|
pub const msgpack = @import("msgpack");
|
||
|
|
|
||
|
|
pub const binary = @import("binary.zig");
|
||
|
|
pub const string = @import("string.zig");
|
||
|
|
pub const int = @import("int.zig");
|
||
|
|
pub const uint = @import("uint.zig");
|
||
|
|
|
||
|
|
test {
|
||
|
|
@import("std").testing.refAllDecls(@This());
|
||
|
|
}
|
||
|
|
|
||
|
|
const Object = msgpack.Object;
|
||
|
|
const serialise = msgpack.serialise;
|
||
|
|
|
||
|
|
test "nil" {
|
||
|
|
const alloc = std.testing.allocator;
|
||
|
|
|
||
|
|
const obj: Object = .nil;
|
||
|
|
defer obj.deinit(alloc);
|
||
|
|
|
||
|
|
const bytes = try serialise(alloc, obj);
|
||
|
|
defer alloc.free(bytes);
|
||
|
|
|
||
|
|
try std.testing.expectEqualSlices(u8, &[_]u8{0xc0}, bytes);
|
||
|
|
}
|
||
|
|
|
||
|
|
test "bool" {
|
||
|
|
const alloc = std.testing.allocator;
|
||
|
|
|
||
|
|
{
|
||
|
|
const obj = Object{ .bool = false };
|
||
|
|
defer obj.deinit(alloc);
|
||
|
|
|
||
|
|
const bytes = try serialise(alloc, obj);
|
||
|
|
defer alloc.free(bytes);
|
||
|
|
|
||
|
|
try std.testing.expectEqualSlices(u8, &[_]u8{0xc2}, bytes);
|
||
|
|
}
|
||
|
|
|
||
|
|
{
|
||
|
|
const obj = Object{ .bool = true };
|
||
|
|
defer obj.deinit(alloc);
|
||
|
|
|
||
|
|
const bytes = try serialise(alloc, obj);
|
||
|
|
defer alloc.free(bytes);
|
||
|
|
|
||
|
|
try std.testing.expectEqualSlices(u8, &[_]u8{0xc3}, bytes);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
test "f32" {
|
||
|
|
const alloc = std.testing.allocator;
|
||
|
|
|
||
|
|
{
|
||
|
|
const bytes = try serialise(alloc, .{ .float32 = 3.4028234e38 });
|
||
|
|
defer alloc.free(bytes);
|
||
|
|
|
||
|
|
// try std.testing.expectEqual(3.4028234e38, obj.float32);
|
||
|
|
try std.testing.expectEqualSlices(u8, &[_]u8{ 0xca, 0x7f, 0x7f, 0xff, 0xff }, bytes);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
test "f64" {
|
||
|
|
const alloc = std.testing.allocator;
|
||
|
|
|
||
|
|
{
|
||
|
|
const bytes = try serialise(alloc, .{ .float64 = 0.0 });
|
||
|
|
defer alloc.free(bytes);
|
||
|
|
|
||
|
|
// try std.testing.expectEqual(3.4028234e38, obj.float32);
|
||
|
|
try std.testing.expectEqualSlices(u8, &[_]u8{ 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, bytes);
|
||
|
|
}
|
||
|
|
|
||
|
|
{
|
||
|
|
const bytes = try serialise(alloc, .{ .float64 = 42.0 });
|
||
|
|
defer alloc.free(bytes);
|
||
|
|
|
||
|
|
// try std.testing.expectEqual(3.4028234e38, obj.float32);
|
||
|
|
try std.testing.expectEqualSlices(u8, &[_]u8{ 0xcb, 0x40, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, bytes);
|
||
|
|
}
|
||
|
|
}
|