test_that("when_any", {
do <- async(function() {
d1 <- delay(1/10)$then(function(value) "foo")
d2 <- delay(1/10000)$then(function(value) "bar")
when_any(d1, d2)$
then(function(value) expect_equal(value, "bar"))
})
synchronise(do())
})
test_that("when_any, non-deferred", {
do <- async(function() {
d1 <- delay(1/100)$then(function(value) "foo")
d2 <- "bar"
when_any(d1, d2)$
then(function(value) expect_equal(value, "bar"))$
then(function(.) d1)$
catch(error = identity)
})
synchronise(do())
})
test_that("when_any, non-deferred only", {
do <- async(function() {
d1 <- "foo"
d2 <- "bar"
dx <- when_any(d1, d2)$
then(function(value) expect_true(value %in% c("foo", "bar")))
})
synchronise(do())
})
test_that("when_any, error first, success then", {
do <- async(function() {
d1 <- delay(1/10000)$then(function(value) stop("foo"))
d2 <- delay(1/10)$then(function(value) "bar")
dx <- when_any(d1, d2)$
then(function(value) expect_equal(value, "bar"))
})
synchronise(do())
})
test_that("when_any, late error is ignored", {
do <- async(function() {
d1 <- delay(1/10)$then(function(value) stop("foo"))
d2 <- delay(1/10000)$then(function(value) "bar")
dx <- when_any(d1, d2)$
catch(error = function(value) expect_equal(value, "bar"))
})
expect_silent(synchronise(do()))
})
test_that("when_any, multiple errors", {
skip_on_cran()
errors <- list()
do <- async(function() {
d1 <- delay(1/10 )$then(function(value) stop("foo"))
d2 <- delay(1/100000)$then(function(value) stop("bar"))
dx <- when_any(d1, d2)$
catch(error = function(reason) {
errors <<- reason$errors
})
})
synchronise(do())
expect_match(conditionMessage(errors[[1]]), "bar")
expect_match(conditionMessage(errors[[2]]), "foo")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.