Nothing
test_that("we can create weak references", {
g <- new.env()
g$foo <- "bar"
value <- "foobar"
vs <- make_weak_ref(key = g, value = value)
expect_identical(typeof(vs), "weakref")
expect_identical(weak_ref_key(vs), g)
expect_identical(weak_ref_value(vs), value)
})
test_that("weak references are weak", {
g <- new.env()
g$foo <- "bar"
value <- "foobar"
vs <- make_weak_ref(key = g, value = value)
rm(g)
gc()
expect_null(weak_ref_key(vs))
expect_null(weak_ref_value(vs))
})
test_that("weak reference finalizer is called", {
g <- new.env()
g$foo <- "bar"
value <- "foobar"
hello <- ""
fin <- function(env) hello <<- "world"
vs <- make_weak_ref(key = g, value = value, finalizer = fin)
rm(g)
gc()
expect_equal(hello, "world")
})
test_that("weak reference on an embedded env", {
g <- list(yes = new.env())
g[[1]]$foo <- "bar"
value <- "foobar"
vs <- make_weak_ref(key = g[[1]], value = value)
rm(g)
gc()
expect_null(weak_ref_key(vs))
expect_null(weak_ref_value(vs))
})
test_that("embed myself, and weak ref", {
g <- list(yes = new.env())
assign("foo", g, envir = g[[1]])
value <- "foobar"
hello <- ""
fin <- function(env) hello <<- "world"
vs <- make_weak_ref(key = g[[1]], value = value, finalizer = fin)
rm(g)
gc()
expect_null(weak_ref_key(vs))
expect_null(weak_ref_value(vs))
expect_equal(hello, "world")
})
test_that("embed myself, and weak ref as attribute", {
g <- list(yes = new.env())
assign("foo", g, envir = g[[1]])
value <- "foobar"
hello <- ""
fin <- function(env) hello <<- "world"
z <- "footoo"
attr(z, "env") <- make_weak_ref(
key = g[[1]], value = value,
finalizer = fin
)
rm(g)
gc()
expect_null(weak_ref_key(attr(z, "env")))
expect_null(weak_ref_value(attr(z, "env")))
expect_equal(hello, "world")
})
test_that("weak refs work for vs", {
g <- make_ring(10)
vs <- V(g)
expect_true(!is.null(get_vs_ref(g)))
expect_true(!is.null(weak_ref_key(attr(vs, "env"))))
rm(g)
gc()
expect_null(weak_ref_key(attr(vs, "env")))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.