| |
| library(compiler) |
| |
| ## |
| ## Tests for findHomeNS() |
| ## |
| |
| findHomeNS <- compiler:::findHomeNS |
| |
| ## return value for an undefinded variable should be NULL |
| stopifnot(is.null(findHomeNS("foo", getNamespace("stats")))) |
| stopifnot(is.null(findHomeNS("foo", parent.env(getNamespace("stats"))))) |
| stopifnot(is.null(findHomeNS("foo", getNamespace("base")))) |
| |
| ## + is found in .BaseNamespaceEnv for stats or base |
| stopifnot(identical(findHomeNS("+", getNamespace("stats")), |
| .BaseNamespaceEnv)) |
| stopifnot(identical(findHomeNS("+", parent.env(getNamespace("stats"))), |
| .BaseNamespaceEnv)) |
| stopifnot(identical(findHomeNS("+", getNamespace("base")), |
| .BaseNamespaceEnv)) |
| |
| ## dnorm is defined in stats |
| stopifnot(identical(findHomeNS("dnorm", getNamespace("stats")), |
| getNamespace("stats"))) |
| stopifnot(identical(findHomeNS("dnorm", parent.env(getNamespace("stats"))), |
| getNamespace("stats"))) |
| stopifnot(is.null(findHomeNS("dnorm", getNamespace("base")))) |
| |
| ## plot is available via the stats namespace since stats imports graphics |
| stopifnot(identical(findHomeNS("plot", getNamespace("stats")), |
| getNamespace("graphics"))) |
| stopifnot(identical(findHomeNS("plot", parent.env(getNamespace("stats"))), |
| getNamespace("graphics"))) |
| stopifnot(is.null(findHomeNS("plot", getNamespace("base")))) |
| |
| ## palette is one of a small set of selective imports from grDevices |
| stopifnot(identical(findHomeNS("palette", getNamespace("stats")), |
| getNamespace("grDevices"))) |
| stopifnot(identical(findHomeNS("palette", parent.env(getNamespace("stats"))), |
| getNamespace("grDevices"))) |
| stopifnot(is.null(findHomeNS("palette", getNamespace("base")))) |
| |
| |
| ## |
| ## Tests for getAssignedVar |
| ## |
| |
| getAssignedVar <- compiler:::getAssignedVar |
| stopifnot(identical(getAssignedVar(quote("v"<-x)), "v")) |
| stopifnot(identical(getAssignedVar(quote(v<-x)), "v")) |
| stopifnot(identical(getAssignedVar(quote(f(v)<-x)), "v")) |
| stopifnot(identical(getAssignedVar(quote(f(g(v,2),1)<-x)), "v")) |
| |
| |
| ## |
| ## Tests for findLocals |
| ## |
| |
| findLocals <- compiler:::findLocals |
| cenv <- compiler:::makeCenv(.GlobalEnv) |
| cntxt <- compiler:::make.toplevelContext(cenv, NULL) |
| |
| stopifnot(identical(findLocals(quote(x<-1), cntxt), "x")) |
| stopifnot(identical(findLocals(quote(f(x)<-1), cntxt), "x")) |
| stopifnot(identical(findLocals(quote(f(g(x,2),1)<-1), cntxt), "x")) |
| stopifnot(identical(findLocals(quote(x<-y<-1), cntxt), c("x","y"))) |
| stopifnot(identical(findLocals(quote(local(x<-1,e)), cntxt), "x")) |
| stopifnot(identical(findLocals(quote(local(x<-1)), cntxt), character(0))) |
| stopifnot(identical(findLocals(quote({local<-1;local(x<-1)}), cntxt), |
| c("local", "x"))) |
| |
| local({ |
| f <- function (f, x, y) { |
| local <- f |
| local(x <- y) |
| x |
| } |
| stopifnot(identical(findLocals(body(f), cntxt), c("local","x"))) |
| }) |
| |
| local({ |
| cenv <- compiler:::addCenvVars(cenv, "local") |
| cntxt <- compiler:::make.toplevelContext(cenv, NULL) |
| stopifnot(identical(findLocals(quote(local(x<-1,e)), cntxt), "x")) |
| }) |
| |
| stopifnot(identical(findLocals(quote(assign(x, 3)), cntxt), character(0))) |
| stopifnot(identical(findLocals(quote(assign("x", 3)), cntxt), "x")) |
| stopifnot(identical(findLocals(quote(assign("x", 3, 4)), cntxt), character(0))) |