1source("incl/start.R")
2
3message("*** Standard output ...")
4
5truth_rows <- utils::capture.output({
6  print(1:50)
7  str(1:50)
8  cat(letters, sep = "-")
9  cat(1:6, collapse = "\n")
10  write.table(datasets::iris[1:10,], sep = "\t")
11})
12truth <- paste0(paste(truth_rows, collapse = "\n"), "\n")
13print(truth)
14
15for (cores in seq_len(min(2L, availCores))) {
16  message(sprintf("Testing with %d cores ...", cores))
17  options(mc.cores = cores)
18
19  for (strategy in supportedStrategies(cores)) {
20    message(sprintf("%s ...", strategy))
21    plan(strategy)
22
23    for (stdout in c(TRUE, FALSE, NA)) {
24      message(sprintf("- stdout = %s", stdout))
25
26      f <- future({
27        print(1:50)
28        str(1:50)
29        cat(letters, sep = "-")
30        cat(1:6, collapse = "\n")
31        write.table(datasets::iris[1:10,], sep = "\t")
32        42L
33      }, stdout = stdout)
34      r <- result(f)
35      str(r)
36      stopifnot(value(f) == 42L)
37      if (is.na(stdout)) {
38        stopifnot(is.null(r$stdout) || r$stdout == "")
39      } else if (stdout) {
40        print(r)
41        stopifnot(identical(r$stdout, truth))
42      } else {
43        stopifnot(is.null(r$stdout))
44      }
45
46      v %<-% {
47        print(1:50)
48        str(1:50)
49        cat(letters, sep = "-")
50        cat(1:6, collapse = "\n")
51        write.table(datasets::iris[1:10,], sep = "\t")
52        42L
53      } %stdout% stdout
54      out <- utils::capture.output(y <- v)
55      stopifnot(y == 42L)
56      if (is.na(stdout)) {
57        ## Single-core multisession => sequential
58        if (cores > 1L || strategy != "multisession") {
59          stopifnot(out == "")
60        }
61      } else if (stdout) {
62        print(out)
63        stopifnot(identical(out, truth_rows))
64      } else {
65        stopifnot(out == "")
66      }
67    } ## for (stdout ...)
68
69    message(sprintf("%s ... done", strategy))
70  } ## for (strategy ...)
71
72  message(sprintf("Testing with %d cores ... done", cores))
73} ## for (cores ...)
74
75message("*** Standard output ... DONE")
76
77source("incl/end.R")
78