test_that("updateParVals works", { # simple dependency pa = list(a = 1, b = 2, d = 4, e = 5) pb = list(a = 0, c = 3) ps = makeParamSet( makeIntegerParam("a"), makeIntegerParam("b", requires = quote(a == 1)), makeIntegerParam("c"), makeIntegerParam("d"), makeIntegerParam("e", requires = quote(f == TRUE)), makeLogicalParam("f", default = TRUE)) pc = updateParVals(ps, pa, pb) expect_equal(pc, list(a = 0, c = 3, d = 4, e = 5)) expect_warning(expect_warning(updateParVals(ps, pa, pb, warn = TRUE), "ParamSetting b=2"), "ParamSetting b=2") pb2 = list(a = 0, f = FALSE) pc2 = updateParVals(ps, pa, pb2) expect_equal(pc2, list(a = 0, f = FALSE, d = 4)) # sanity expect_equal(updateParVals(ps, pa, list()), pa) expect_equal(updateParVals(ps, list(), pb), pb) # chained dependency pa = list(a = 1, b = 2, c = 0.5, d = 4) pb = list(a = -3) ps = makeParamSet( makeIntegerParam("a", requires = quote(e == TRUE)), makeIntegerParam("b", requires = quote(a == 1)), makeNumericParam("c"), makeIntegerParam("d", requires = quote(b == 2)), makeLogicalParam("e", default = TRUE)) pc = updateParVals(ps, pa, pb) expect_equal(pc, list(a = -3, c = 0.5)) # chained dependency with defaults #maybe redundanant with pc2? ps = makeParamSet( makeIntegerParam("a", default = 1L, requires = quote(b == 2)), makeIntegerParam("b", default = 2L, requires = quote(c == TRUE)), makeLogicalParam("c", default = TRUE)) pa = list(a = 1, b = 2, c = TRUE) pb = list(b = 3) pc = updateParVals(ps, pa, pb) expect_equal(pc, list(b = 3, c = TRUE)) })