Nothing
source("incl/start.R")
library("listenv")
strategies <- supportedStrategies()
message("*** resolve() ...")
message("*** resolve() for default ...")
x <- 1
y <- resolve(x)
stopifnot(identical(y, x))
message("*** resolve() for default ... DONE")
for (strategy in strategies) {
message(sprintf("- plan('%s') ...", strategy))
plan(strategy)
if (strategy == "multisession" && availableCores() >= 2) {
message("*** resolve() for Future objects ...")
for (result in c(FALSE, TRUE)) {
for (recursive in list(FALSE, TRUE, -1, 0, 1, 2, Inf)) {
message(sprintf("- result = %s, recursive = %s ...", result, recursive))
f <- future({
Sys.sleep(0.5)
list(a = 1, b = 42L)
})
res <- resolve(f, result = result, recursive = recursive)
stopifnot(identical(res, f))
f <- future({
Sys.sleep(0.5)
list(a = 1, b = 42L)
}, lazy = TRUE)
res <- resolve(f, result = result, recursive = recursive)
stopifnot(identical(res, f))
message("- w/ exception ...")
f <- future(list(a = 1, b = 42L, c = stop("Nah!")))
res <- resolve(f, result = result, recursive = recursive)
stopifnot(identical(res, f))
f <- future(list(a = 1, b = 42L, c = stop("Nah!")), lazy = TRUE)
res <- resolve(f, result = result, recursive = recursive)
stopifnot(identical(res, f))
message(sprintf("- result = %s, recursive = %s ... DONE", result, recursive))
} ## for (resolve ...)
} ## for (result ...)
message("*** resolve() for Future objects ... DONE")
} ## if (strategy == "multisession" && availableCores() >= 2)
message("*** resolve() for lists ...")
x <- list()
y <- resolve(x)
stopifnot(identical(y, x))
x <- list()
x$a <- 1
x$b <- 2
y <- resolve(x)
stopifnot(identical(y, x))
x <- list()
x$a <- future(1)
x$b <- future(2)
x[[3]] <- 3
y <- resolve(x)
stopifnot(identical(y, x))
stopifnot(resolved(x$a))
stopifnot(resolved(x[["b"]]))
x <- list()
x$a <- future(1, lazy = TRUE)
x$b <- future(2)
x[[3]] <- 3
y <- resolve(x)
stopifnot(identical(y, x))
stopifnot(resolved(x$a))
stopifnot(resolved(x[["b"]]))
x <- list()
x$a <- future(1, lazy = TRUE)
x$b <- future(2, lazy = TRUE)
x[[3]] <- 3
y <- resolve(x)
stopifnot(identical(y, x))
stopifnot(resolved(x$a))
stopifnot(resolved(x[["b"]]))
x <- list()
x$a <- future(1)
x$b <- future({Sys.sleep(0.5); 2})
x[[4]] <- 4
dim(x) <- c(2, 2)
y <- resolve(x, idxs = 1)
stopifnot(identical(y, x))
stopifnot(resolved(x[[1]]))
y <- resolve(x, idxs = 2)
stopifnot(identical(y, x))
stopifnot(resolved(x[[2]]))
y <- resolve(x, idxs = 3)
stopifnot(identical(y, x))
y <- resolve(x, idxs = seq_along(x))
stopifnot(identical(y, x))
y <- resolve(x, idxs = names(x))
stopifnot(identical(y, x))
y <- resolve(x, idxs = matrix(c(1, 2), ncol = 2L), result = TRUE)
stopifnot(identical(y, x))
x <- list()
for (kk in 1:3) x[[kk]] <- future({ Sys.sleep(0.1); kk })
y <- resolve(x)
stopifnot(identical(y, x))
x <- list()
for (kk in 1:3) x[[kk]] <- future({ Sys.sleep(0.1); kk }, lazy = TRUE)
y <- resolve(x)
stopifnot(identical(y, x))
## Exceptions
x <- list()
x$a <- 1
x$b <- 2
res <- tryCatch(y <- resolve(x, idxs = 0L), error = identity)
stopifnot(inherits(res, "error"))
res <- tryCatch(y <- resolve(x, idxs = "unknown"), error = identity)
stopifnot(inherits(res, "error"))
x <- list(1, 2)
res <- tryCatch(x <- resolve(x, idxs = "a"), error = identity)
stopifnot(inherits(res, "error"))
message("*** resolve() for lists ... DONE")
message("*** resolve() for environments ...")
x <- new.env()
y <- resolve(x)
stopifnot(identical(y, x))
x <- new.env()
x$a <- 1
x$b <- 2
y <- resolve(x)
stopifnot(identical(y, x))
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 0L)
x <- new.env()
x$a <- future(1)
x$b <- future(2)
x$c <- 3
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 2L)
y <- resolve(x)
stopifnot(identical(y, x))
stopifnot(resolved(x$a))
stopifnot(resolved(x$b))
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 2L)
x <- new.env()
x$a %<-% { 1 }
x$b %<-% { 2 }
x$c <- 3
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 2L)
y <- resolve(x) ## FIXME: Should not do value()!
stopifnot(identical(y, x))
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 2L)
x <- new.env()
x$a <- future({ 1 })
x$b %<-% { 2 }
x$c <- 3
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 2L)
y <- resolve(x, idxs = "a")
stopifnot(identical(y, x))
stopifnot(resolved(x$a))
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 2L)
y <- resolve(x, idxs = "b")
stopifnot(identical(y, x))
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 2L)
y <- resolve(x, idxs = "c")
stopifnot(identical(y, x))
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 2L)
y <- resolve(x, idxs = names(x), result = TRUE)
stopifnot(identical(y, x))
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 2L)
y <- resolve(x, recursive = TRUE, result = TRUE)
stopifnot(identical(y, x))
## Exceptions
res <- tryCatch(y <- resolve(x, idxs = "unknown"), error = identity)
stopifnot(inherits(res, "error"))
message("*** resolve() for environments ... DONE")
message("*** resolve() for list environments ...")
x <- listenv()
y <- resolve(x)
stopifnot(identical(y, x))
x <- listenv()
x$a <- 1
x$b <- 2
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 0L)
y <- resolve(x)
stopifnot(identical(y, x))
x <- listenv()
x$a <- future(1)
x$b <- future(2)
x$c <- 3
names <- names(x)
dim(x) <- c(1, 3)
names(x) <- names
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 2L)
y <- resolve(x)
stopifnot(identical(y, x))
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 2L)
x <- listenv()
x$a %<-% { 1 }
x$b %<-% { 2 }
x$c <- 3
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 2L)
y <- resolve(x) ## FIXME: Should not do value()!
stopifnot(identical(y, x))
#stopifnot(is.na(futureOf(x$a, mustExist = FALSE)))
#stopifnot(is.na(futureOf(x$b, mustExist = FALSE)))
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 2L)
x <- listenv()
x$a <- future({ 1 })
x$b %<-% { Sys.sleep(0.5); 2 }
x$c %<-% { 3 }
x$d <- 4
names <- names(x)
dim(x) <- c(2, 2)
names(x) <- names
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 3L)
y <- resolve(x, idxs = "a")
stopifnot(identical(y, x))
stopifnot(identical(futureOf(x$a, mustExist = FALSE), x$a))
stopifnot(resolved(x$a))
y <- resolve(x, idxs = "b")
stopifnot(identical(y, x))
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 3L)
idxs <- matrix(c(1, 2), ncol = 2L)
y <- resolve(x, idxs = idxs)
stopifnot(identical(y, x))
#stopifnot(is.na(futureOf(x$c, mustExist = FALSE)))
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 3L)
y <- resolve(x, idxs = 4L)
stopifnot(identical(y, x))
#stopifnot(is.na(futureOf(x[[4L]], mustExist = FALSE)))
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 3L)
y <- resolve(x, idxs = names(x), result = TRUE)
stopifnot(identical(y, x))
stopifnot(length(futureOf(envir = x, drop = TRUE)) == 3L)
y <- resolve(x, recursive = TRUE, result = TRUE)
stopifnot(identical(y, x))
## Exceptions
res <- tryCatch(y <- resolve(x, idxs = 0L), error = identity)
stopifnot(inherits(res, "error"))
res <- tryCatch(y <- resolve(x, idxs = "unknown"), error = identity)
stopifnot(inherits(res, "error"))
message("*** resolve() for list environments ... DONE")
message(sprintf("- plan('%s') ...", strategy))
} ## for (strategy ...)
message("*** resolve() - globals with non-trustful length() ...")
length.CantTrustLength <- function(x) length(unclass(x)) + 1L
.length <- future:::.length
x <- structure(as.list(1:3), class = c("CantTrustLength", "list"))
str(list(n = length(x), n_true = .length(x)))
stopifnot(length(x) > .length(x))
x <- resolve(x)
message("*** resolve() - globals with non-trustful length() ... DONE")
message("*** resolved() - default ...")
res <- resolved(42L)
stopifnot(isTRUE(res))
message("*** resolved() - default ... DONE")
message("*** resolve() ... DONE")
source("incl/end.R")
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.