tests/testthat/test-as.R

context("casts")

test_that("as.dict and as.list work as expected", {
  l <- list(a = 1, b = 2, d = sum, e = list(x = seq(10)))
  d <- as.dict(l)
  expect_equal(length(d), 4)
  expect_equal(as.list(d), l)

  num <- c(a = 1.5, x = 2, d = 3, four = 4)
  d <- as.dict(num)
  expect_length(d$values(), 4)

  int <- c(a = 1L, x = 2L, d = 3L, four = 4L, five = 5L)
  d <- as.dict(int)
  expect_length(d$values(), 5)

  bool <- c(a = TRUE, x = FALSE, d = FALSE)
  d <- as.dict(bool)
  expect_length(d$values(), 3)

  chr <- c(a = "1", x = "iks")
  d <- as.dict(chr)
  expect_length(d$values(), 2)

  df <- data.frame(x = seq(2), y = c("a", "b"), z = factor("1", "two"))
  d <- as.dict(df)
  expect_equal(length(d), 3)
  expect_equal(d$get("z"), df$z)

  e <- new.env()
  e$x <- 1
  e$y <- "val"
  d <- as.dict(e)
  expect_length(d$values(), 2)
  e$z <- "i won't modify dict"
  expect_length(d$keys(), 2)

  expect_error(as.dict(mean))
  expect_error(as.dict(quote(x + y)))
})
skubicius/dictionary documentation built on May 7, 2019, 7:17 p.m.