-
-
Notifications
You must be signed in to change notification settings - Fork 7
Description
Suppose the following ParamSet
:
> ps <- ParamSet$new(list(
ParamLgl$new("x", default = TRUE),
ParamLgl$new("y")))
> ps$add_dep("y", "x", CondEqual$new(TRUE))
Here the default = TRUE
indicates that, if the parameter x
is not given, the whole thing should behave like x
is set to TRUE
. E.g. x
could indicate whether a certain feature is used, and y
could then influence the configuration of that feature---y
then depends on x
being TRUE
, since it does not have anything to configure if x
is FALSE
.
Since the "default" behaviour indicated is that the feature is usually present (everything behaves like x
is TRUE
) if x
is not given at all, it makes sense to just set the y
parameter and have the x
parameter be "implicitly" TRUE
.
This is not what happens, however:
> ps$values <- list(y = TRUE)
Error in (function (xs) :
Assertion on 'xs' failed: The parameter 'y' can only be set if the following condition is met 'x = TRUE'. Instead the parameter value for 'x' is not set at all. Try setting 'x' to a value that satisfies the condition.
The ParamSet$check()
function should do an xs = insert_named(self$default, xs)
after the if(!isTRUE(ok))
block. What I am describing above should be added as a test; possibly add more tests.
(I believe one of our student assistants could solve this)