test_that("dfRowToList", {
ps = makeParamSet(
makeDiscreteParam("x", values = list(a = iris, b = 123)),
makeNumericParam("y", lower = 1, upper = 2),
makeNumericVectorParam("z", len = 2, lower = 10, upper = 20)
)
des = generateDesign(10, par.set = ps)
vals = dfRowsToList(des, ps)
expect_true(is.list(vals) && length(vals) == nrow(des))
for (i in seq_row(des)) {
v = vals[[i]]
expect_true(is.list(v) && length(v) == 3 && all(names(v) == c("x", "y", "z")))
expect_true(identical(v$x, iris) || identical(v$x, 123))
expect_true(is.numeric(v$y) && length(v$y) == 1 && v$y >= 1 && v$y <= 2)
expect_true(is.numeric(v$z) && length(v$z) == 2 && all(v$z >= 10 & v$z <= 20))
}
})
test_that("requires works", {
ps = makeParamSet(
makeDiscreteParam("x", values = c("a", "b")),
makeNumericParam("y", lower = 1, upper = 2, requires = quote(x == "a")),
makeNumericVectorParam("z", len = 2, lower = 10, upper = 20, requires = quote(x == "b"))
)
des = generateDesign(10, par.set = ps)
mycheck = function(vals) {
expect_true(is.list(vals) && length(vals) == nrow(des))
for (i in seq_row(des)) {
v = vals[[i]]
expect_true(is.list(v) && length(v) == 3L && all(names(v) %in% c("x", "y", "z")))
expect_true(is.character(v$x) && length(v$x) == 1 && v$x %in% c("a", "b"))
if (v$x == "a") {
expect_true(is.numeric(v$y) && length(v$y) == 1 && v$y >= 1 && v$y <= 2)
expect_true(isScalarNA(v$z))
} else if (v$x == "b") {
expect_true(isScalarNA(v$y))
expect_true(is.numeric(v$z) && length(v$z) == 2 && all(v$z >= 10 & v$z <= 20))
}
}
}
vals = dfRowsToList(des, ps)
mycheck(vals)
})
test_that("ints in data frame work", {
df = data.frame(x = 1:3, y = as.numeric(1:3))
ps = makeParamSet(
makeIntegerParam("x"),
makeIntegerParam("y")
)
xs = dfRowsToList(df, ps)
expect_equal(xs[[1]], list(x = 1L, y = 1L))
})
test_that("enforce.col.types works", {
df = data.frame(u = c(NA, NA), x = 1:2, y = as.numeric(1:2), z = c("TRUE", "FALSE"))
ps = makeParamSet(
makeNumericParam("u"),
makeIntegerParam("x"),
makeIntegerParam("y"),
makeLogicalParam("z")
)
x = dfRowToList(df, ps, 1L, enforce.col.types = TRUE)
expect_equal(x, list(u = NA, x = 1L, y = 1L, z = TRUE))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.