context("function integerity")
test_that("new functions inherit formal arguments from originals", {
# see also issue 9
f <- function(x, y = TRUE) if (y) x else -x
g <- limit_rate(f, rate(10, 1))
expect_equal(formals(f), formals(g))
})
test_that("new functions have same outputs as originals", {
f <- limit_rate(mean, rate(100, .1))
rand <- runif(20)
expect_identical(
f(rand), mean(rand)
)
f <- function() stop("stop")
g <- limit_rate(f, rate(10, 1))
err_f <- tryCatch(f(), error = function(e) e)
err_g <- tryCatch(g(), error = function(e) e)
expect_identical(
err_f$message, err_g$message
)
expect_identical(
class(err_f), class(err_g)
)
})
test_that("functions can be called in weird ways", {
f <- limit_rate(mean, rate(100, .1))
env <- new.env(parent = baseenv())
env$rand <- runif(20)
env$f <- f
expect_identical(
f(env$rand),
eval(quote(f(rand)), envir = env)
)
expect_identical(
f(env$rand),
eval(substitute(f(rand), env = env))
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.