import std.exception : assertThrown, enforce; struct Tester { @Validate!(value => enforce(value == 1)) int a = 1; @Validate!((value, options) => enforce(value == 2 * options.a)) int b = 2; string[] calls; @PostValidate(Priority.low) void priorityLow() { calls ~= "priorityLow"; } @PostValidate(Priority.medium) void priorityMedium() { calls ~= "priorityMedium"; } @PostValidate(Priority.high) void priorityHigh() { calls ~= "priorityHigh"; } } Tester options; options = processOptions(options); assert(options.calls == [ "priorityHigh", "priorityMedium", "priorityLow", ]); options.a = 2; assertThrown!Exception(processOptions(options));
Call this method on the result of parseArgs to execute validations and validation hooks.