test_that("HTTP HEAD & synchronous then", {
do <- function() {
http_head(http$url("/"))$
then(function(value) value$status_code)$
then(function(x) expect_equal(x, 200))
}
synchronise(do())
})
test_that("HTTP HEAD & async then", {
do <- function() {
http_head(http$url("/"))$
then(function(value) http_get(value$url))$
then(function(value) expect_equal(value$status_code, 200))
}
synchronise(do())
})
test_that("HTTP HEAD & async then & sync then", {
do <- function() {
http_head(http$url("/"))$
then(function(value) http_get(value$url))$
then(function(value) value$status_code)$
then(function(value) expect_equal(value, 200))
}
synchronise(do())
})
test_that("then for fulfilled", {
do <- async(function() {
dx <- http_head(http$url("/status/404"))
dx2 <- http_head(http$url("/status/404"))
dx$then(function() {
dx2$
then(function(value) value$status_code)$
then(function(value) expect_equal(value, 404))
})
})
synchronise(do())
})
test_that("multiple then clauses are not allowed", {
do <- async(function() {
dx <- delay(1/1000)
dx$then(function() 1)
dx$then(function() 2)
})
err <- tryCatch(synchronise(do()), error = identity)
expect_s3_class(err, "async_rejected")
expect_match(conditionMessage(err), "already owned")
})
test_that("compact function notation", {
do <- function() {
http_head(http$url("/"))$
then(function(.) http_get(.$url))$
then(function(.) .$status_code)$
then(function(.) expect_equal(., 200))
}
synchronise(do())
})
test_that("embedded then", {
add1 <- function(n) { n ; delay(10/1000)$then(function(value) n + 1) }
mul3 <- function(n) { n ; delay(10/1000)$then(function(value) n * 3) }
do <- function() {
add1(4)$
then(mul3)$
then(function(.) expect_equal(., 15))
}
synchronise(do())
})
test_that("more embedded thens", {
steps <- numeric()
do <- function() {
async(function() steps <<- c(steps, 1))()$
then(function() {
async_constant()$
then(function() steps <<- c(steps, 2))$
then(function() steps <<- c(steps, 3))
})$
then(function() {
async_constant()$
then(function() steps <<- c(steps, 4))$
then(function() steps <<- c(steps, 5))
})$
then(function() steps <<- c(steps, 6))
}
synchronise(do())
expect_equal(steps, 1:6)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.