From f743e05e207046073999ee7234a157359d6a4f57 Mon Sep 17 00:00:00 2001 From: Christian Segundo Date: Mon, 24 Jul 2023 10:28:58 +0200 Subject: wip --- src/types.zig | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'src/types.zig') diff --git a/src/types.zig b/src/types.zig index 7de8fa1..7ed50dc 100644 --- a/src/types.zig +++ b/src/types.zig @@ -1,3 +1,7 @@ +const std = @import("std"); + +const Request = @import("request.zig").Request; + // types are from: // https://github.com/transmission/transmission/blob/76166d8fa71f351fe46221d737f8849b23f551f7/libtransmission/transmission.h#L1604 // where: @@ -225,3 +229,44 @@ pub const Torrent = struct { // Number of webseeds that are sending data to us. webseedsSendingToUs: ?u16 = null, }; + +// Checks that all fields in Torrent are in sync with TorrentGet.Fields +test "torrent fields" { + @setEvalBranchQuota(10000); + + const torrent_get_request_fields = comptime blk: { + const kv = struct { []const u8 }; + var slice: []const kv = &[_]kv{}; + + for (std.meta.fields(Request.TorrentGet.Fields)) |field| { + slice = slice ++ &[_]kv{.{field.name}}; + } + + break :blk std.ComptimeStringMap(void, slice); + }; + + const torrent_fields = comptime blk: { + const kv = struct { []const u8 }; + var slice: []const kv = &[_]kv{}; + + for (std.meta.fields(Torrent)) |field| { + slice = slice ++ &[_]kv{.{field.name}}; + } + + break :blk std.ComptimeStringMap(void, slice); + }; + + inline for (std.meta.fields(Torrent)) |field| { + if (!torrent_get_request_fields.has(field.name)) { + std.debug.print("field is present in Torrent but missing in TorrentGet: {s}\n", .{field.name}); + } + //try std.testing.expect(torrent_get_request_fields.has(field.name)); + } + + inline for (std.meta.fields(Request.TorrentGet.Fields)) |field| { + if (!torrent_fields.has(field.name)) { + std.debug.print("field is present in TorrentGet but missing in Torrent: {s}\n", .{field.name}); + } + //try std.testing.expect(torrent_fields.has(field.name)); + } +} -- cgit v1.2.3