oopts <- options(warn=1L)
message("TESTING: finalize() on Object without attach ...")
pkgs <- c("R.methodsS3", "R.oo")
isAttached <- function(pkgs) {
structure(sprintf("package:%s", pkgs) %in% search(), names=pkgs)
}
# Record which packages were attached from the beginning
# (happens if not a fresh session)
wasAttached <- isAttached(pkgs)
assertPackages <- function(loaded=c("R.methodsS3", "R.oo")) {
s <- utils::sessionInfo()
s$R.version <- NULL
s$platform <- ""
s$locale <- ""
cat("----------------------------------")
print(s)
cat("----------------------------------\n\n")
loaded <- loaded[!wasAttached[loaded]]
stopifnot(!any(isAttached(loaded)))
}
R.oo::setConstructorS3("MyClass", function(a=1:10) {
R.oo::extend(R.oo::Object(), "MyClass", a=a)
})
# Create an object with a finalizer
x <- MyClass()
assertPackages()
# Remove 'x' so that it will be finalized below
rm(x)
gc()
assertPackages(loaded="R.oo")
message("TESTING: finalize() on Object without attach ... DONE")
options(oopts)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.