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