diff options
author | Christian Segundo | 2023-07-24 10:28:58 +0200 |
---|---|---|
committer | Christian Segundo | 2023-07-24 10:28:58 +0200 |
commit | f743e05e207046073999ee7234a157359d6a4f57 (patch) | |
tree | 0ceb01ffdcdc3a094e488c28e80c80d89f8309c5 /src/types.zig | |
parent | b02b7f71978a172848322f0671d580e425634916 (diff) | |
download | zmission-f743e05e207046073999ee7234a157359d6a4f57.tar.gz |
Diffstat (limited to 'src/types.zig')
-rw-r--r-- | src/types.zig | 45 |
1 files changed, 45 insertions, 0 deletions
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)); + } +} |