test_that("search_envs() includes the global and base env", {
envs <- search_envs()
expect_identical(envs[[1]], global_env())
expect_identical(envs[[length(envs)]], base_env())
})
test_that("search_envs() returns named environments", {
expect_identical(names(search_envs()), c("global", search()[-1]))
})
test_that("search_envs() returns an rlang_envs object", {
expect_s3_class(search_envs(), "rlang_envs")
})
test_that("is_namespace() recognises namespaces", {
expect_false(is_namespace(env()))
expect_true(is_namespace(get_env(is_namespace)))
})
test_that("env_name() returns proper environment name", {
expect_identical(env_name(global_env()), "global")
expect_identical(env_name(empty_env()), "empty")
expect_identical(env_name(base_env()), "package:base")
expect_identical(env_name(pkg_env("rlang")), "package:rlang")
expect_identical(env_name(ns_imports_env("rlang")), "imports:rlang")
expect_identical(env_name(ns_env("rlang")), "namespace:rlang")
env <- structure(env(), name = "foobar")
expect_identical(env_label(env), "foobar")
})
test_that("env_label() returns memory address for anonymous envs", {
env <- env()
expect_identical(env_label(env), obj_address(env))
})
test_that("is_attached() detects environments on the search path", {
expect_false(is_attached("utils"))
expect_true(is_attached("package:utils"))
expect_true(is_attached(base_env()))
expect_true(is_attached(global_env()))
expect_false(is_attached(ns_env("base")))
})
test_that("ns_env() and ns_env_name() support primitive functions", {
expect_true(is_reference(ns_env(base::list), ns_env("base")))
expect_true(is_reference(ns_env(base::`{`), ns_env("base")))
expect_identical(ns_env_name(base::list), "base")
expect_identical(ns_env_name(base::`{`), "base")
})
test_that("ns_env() and ns_env_name() support closures", {
fn <- function() NULL
environment(fn) <- env(ns_env("rlang"))
expect_true(is_reference(ns_env(fn), ns_env("rlang")))
expect_identical(ns_env_name(fn), "rlang")
})
test_that("ns_env_name() accepts environments", {
expect_identical(ns_env_name(ns_env("base")), "base")
})
test_that("ns_env() and ns_env_name() take the topenv()", {
ns <- ns_env("rlang")
local <- env(ns)
expect_true(is_reference(ns_env(local), ns))
expect_identical(ns_env_name(local), "rlang")
})
test_that("ns_env() and variants have default argument", {
fn <- function() list(ns_env(), ns_imports_env(), ns_env_name())
environment(fn) <- ns_env("rlang")
out <- fn()
expect_true(is_reference(out[[1]], ns_env("rlang")))
expect_true(is_reference(out[[2]], ns_imports_env("rlang")))
expect_identical(out[[3]], "rlang")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.