tests/testthat/test-fastDoCall.R

context("Check fastDoCall")

test_that("Compatibility with do.call examples",{

  expect_equal(fastDoCall("complex", list(imag = 1:3)),
               do.call("complex", list(imag = 1:3)))

  ## if we already have a list (e.g. a data frame)
  ## we need c() to add further arguments
  tmp <- expand.grid(letters[1:2], 1:3, c("+", "-"))
  expect_equal(fastDoCall("paste", c(tmp, sep = "")),
               do.call("paste", c(tmp, sep = "")))

  # Does not work: do.call(paste, list(as.name("A"), as.name("B")), quote = TRUE)

  ## examples of where objects will be found.
  A <- 2
  f <- function(x) x^2
  env <- new.env()
  assign("A", 10, envir = env)
  assign("f", f, envir = env)
  f <- function(x) x
  expect_equal(fastDoCall("f", list(A)),
               do.call("f", list(A)))
  expect_equal(fastDoCall("f", list(A), envir = env),
               do.call("f", list(A), envir = env))
  expect_equal(fastDoCall(f, list(A), envir = env),
               do.call(f, list(A), envir = env))
  expect_equal(fastDoCall("f", list(quote(A)), envir = env),
               do.call("f", list(quote(A)), envir = env))

  expect_equal(fastDoCall(f, list(quote(A)), envir = env),
               do.call(f, list(quote(A)), envir = env))
  expect_equal(fastDoCall("f", list(as.name("A")), envir = env),
               do.call("f", list(as.name("A")), envir = env))

  expect_equal(fastDoCall("base:::range.default", list(1:4)),
               c(1,4))
  expect_equal(fastDoCall(base:::range.default, list(1:4)),
               do.call(base:::range.default, list(1:4)))

  # Test for passing a data.frame
  expect_equal(fastDoCall(order, datasets::iris),
               do.call(order, datasets::iris),
               info="Failed to accept data.frame passed by ::")

})

Try the Gmisc package in your browser

Any scripts or data that you put into this service are public.

Gmisc documentation built on June 21, 2018, 9:03 a.m.