tests/testthat/test_designs.R

context("designs")

test_that("designs", {
  # one point, empty function call
  d = BatchExperiments:::designIterator(ex=list())
  expect_true(d$hasNext())
  expect_equal(d$n.states, 1)
  expect_equal(d$nextElem(), list())

  d = BatchExperiments:::designIterator(ex=list(), .design=data.frame(a=1:3))
  expect_true(d$hasNext())
  expect_equal(d$n.states, 3L)
  xs = replicate(3, d$nextElem(), simplify=FALSE)
  expect_equal(xs, list(list(a=1L), list(a=2L), list(a=3L)))

  d = BatchExperiments:::designIterator(ex=list(), .design=data.frame(a=1:2, b=4:5))
  expect_true(d$hasNext())
  expect_equal(d$n.states, 2L)
  xs = replicate(2, d$nextElem(), simplify=FALSE)
  expect_equal(xs, list(list(a=1L, b=4L), list(a=2L, b=5L)))

  d = BatchExperiments:::designIterator(ex=list(a=c("x", "y"), b=4:5), .design=data.frame(c=c(1,6), d=c(7,9)))
  expect_true(d$hasNext())
  expect_equal(d$n.states, 8L)
  xs = replicate(8, as.data.frame(d$nextElem()), simplify=FALSE)
  xs = do.call(rbind, xs)
  data = data.frame(
    c = c(1, 1, 1, 1, 6, 6, 6, 6),
    d = c(7, 7, 7, 7, 9, 9, 9, 9),
    a = c("x", "y", "x", "y", "x", "y", "x", "y"),
    b = c(4, 4, 5, 5, 4, 4, 5, 5)
  )
  expect_equal(xs, data[names(xs)])
  expect_false(d$hasNext())
  d$reset()
  expect_equal(d$n.states, 8L)
  xs = replicate(8, as.data.frame(d$nextElem()), simplify=FALSE)
  xs = do.call(rbind, xs)
  expect_equal(xs, data[names(xs)])

  d = BatchExperiments:::designIterator(ex=list(a=as.factor(c("u", "v"))), .design=data.frame(b=as.factor(c("a", "b")), c=c("x", "y"), stringsAsFactors=FALSE))
  x  = d$nextElem()
  y = list(b=factor("a", levels=c("a", "b")), c="x", a=factor("u", levels=c("u", "v")))
  expect_equal(x, y[names(x)])

  #expect_equal(nrow(d$design), 2)
  #expect_equal(ncol(d$design), 1)
  #expect_equal(colnames(d$design), c("a"))
  #expect_true(is.numeric(d$design$a))
  #d = makeDesign(a, design=data.frame(a=1:2, b=c("a", "b")))
  #expect_equal(nrow(d$design), 2)
  #expect_equal(ncol(d$design), 2)
  #expect_equal(colnames(d$design), c("a", "b"))
  #expect_true(is.numeric(d$design$a) && is.character(d$design$b))
  #d = makeDesign(a, design=data.frame(a=1:2, b=c("a", "b")), exhaustive=list(c=pi, d=1:5))
  #expect_equal(nrow(d$design), 10)
  #expect_equal(ncol(d$design), 4)
  #expect_equal(colnames(d$design), c("a", "b", "c", "d"))
  #expect_true(is.numeric(d$design$a) && is.character(d$design$b)
  #  && is.numeric(d$design$c) && is.numeric(d$design$d))

  #d = check_error(makeDesign(a, exhaustive=list(x=iris)), "primitive")
})
tudo-r/BatchExperiments documentation built on April 3, 2022, 3:27 a.m.