From 7be5eba9cba07178903479969efabe6b353f7df9 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Mon, 6 Nov 2023 09:23:24 -0800 Subject: [PATCH] input: unit tests for pasing tuples --- src/input/Binding.zig | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/input/Binding.zig b/src/input/Binding.zig index 568479d86..ed7a93d48 100644 --- a/src/input/Binding.zig +++ b/src/input/Binding.zig @@ -288,6 +288,9 @@ pub const Action = union(enum) { }; } + // If we have extra parameters it is an error + if (it.next() != null) return Error.InvalidFormat; + break :blk value; }, @@ -829,6 +832,27 @@ test "parse: action with float" { } } +test "parse: action with a tuple" { + const testing = std.testing; + + // parameter + { + const binding = try parse("a=resize_split:up,10"); + try testing.expect(binding.action == .resize_split); + try testing.expectEqual(Action.SplitResizeDirection.up, binding.action.resize_split[0]); + try testing.expectEqual(@as(u16, 10), binding.action.resize_split[1]); + } + + // missing parameter + try testing.expectError(Error.InvalidFormat, parse("a=resize_split:up")); + + // too many + try testing.expectError(Error.InvalidFormat, parse("a=resize_split:up,10,12")); + + // invalid type + try testing.expectError(Error.InvalidFormat, parse("a=resize_split:up,four")); +} + test "set: maintains reverse mapping" { const testing = std.testing; const alloc = testing.allocator;