tests/testthat/test_make_df.r

context("All tests of 'make_df'")

test_that("make_df.default works", {
   x <- 1
   class(x) <- paste(sample(letters, 15, T), collapse="")
   expect_equivalent(make_df(x),data.frame())
} )

test_that("make_df works with different environments", {
   df <- data.frame(x=1:3, y=letters[1:3], z=factor(LETTERS[1:3]))
   df[['y']] <- as.character(df[['y']])
   li <- as.list(df)
   x0 <- 1:3
   y0 <- letters[1:3]
   z0 <- factor(LETTERS[1:3])
   this_env <- environment()
   expect_equal(make_df(object = c("x", "y"), env=df), data.frame(x=x0, y=y0))
   expect_equal(make_df(object = c("x", "z"), env=li), data.frame(x=x0, z=z0))
   expect_equal(make_df(object = c("x0", "y0"), env=this_env), data.frame(x0=x0, y0=y0))
})

test_that("make_df.data.frame works", {
  env <- environment()
   DF <- data.frame(x=1:2, y=2:1)
  expect_warning(make_df(c("DF", "DF"), env=env))
  expect_identical(make_df(DF, env = env), DF)
  foo <- new.env()
  assign(x="Hoo", value=data.frame(z=LETTERS, x=1:26), env=foo)
  expect_identical(make_df(object="Hoo", env = foo), get("Hoo", foo))
  assign(x="Boo", value=data.frame(z=letters, x=26:1), env=foo)
  R <- rbind(get("Hoo", foo), get("Boo", foo))
  R$object <- rep(1:2, each=26)
  expect_identical(make_df(c("Hoo", "Boo"), foo), R)
  assign(x="Gro", value=data.frame(Z=letters, x=26:1), env=foo)
  expect_error(make_df(c("Hoo", "Gro"), foo))
  expect_error(make_df("Bar", foo))
  rm(foo, DF, R, env)
})

test_that("make_df.list works", {
   li <- list('a'=1:2, '2'=letters[1:2])
   expect_equal(make_df(li), data.frame(a=1:2, X2=c("a", "b")))
   baz <- new.env()
   assign(x="L1", value=list('a'=1:2, 'QWERTY'=letters[1:2]), envir = baz)
   df1 <- as.data.frame(get("L1", baz))
   assign(x="L2", value=list('a'=2:1, 'QWERTY'=LETTERS[1:2]), envir = baz)
   df2 <- as.data.frame(get("L2", baz))
   assign(x="L3", value=list('a'=3:6, 'wtf'=letters[1:4]), envir = baz)
   expect_identical(make_df("L1", baz), df1)
   R <- rbind(df1, df2)
   R$object <- rep(1:2, each=2)
   expect_identical(make_df(c("L1", "L2"), baz), R)
   expect_error(make_df(c("L1", "L2", "L3"), baz))
})

test_that("make_df.survfit works", {
   library(survival)
   t <- rexp(100)
   e <- rbinom(100,1,0.2)
   f <- factor(rep(LETTERS[1:3], len=100))
   S <- Surv(t, e)
   M1 <- survfit(S~1)
   M1df <- make_df(M1)
   expect_equal( class(M1df), "data.frame")
   expect_equal( M1df$strata, NULL)
   M2 <- survfit(S~f)
   M2df <- make_df(M2)
   expect_equal( class(M2df), "data.frame")
   expect_equal( is.null(M2df$strata), FALSE)
})
renlund/dataman documentation built on May 27, 2019, 5:51 a.m.