# ~~~~~~~ WriteableStream ~~~~~ #
test_that(
"4.1 WriteableStream can be created",
code = {
expect_error(WriteableStream$new(tempfile()), NA)
expect_error(WriteableStream$new(mtcars), NA)
expect_error(WriteableStream$new(1:10), NA)
}
)
test_that(
"4.2.1 Writeable object stream can be written to",
code = {
# object stream
stream <- WriteableStream$new(list())
stream$write(5)
stream$write(list(a = 1, b = 2))
stream$write("foo")
loop_count <- 0
while (loop_count <= 25) {
if (loop_count == 25) {
stop("Reached maximum wait iteration (object)")
}
loop_count <- loop_count + 1
later::run_now(loop = later::global_loop())
if (stream$writeable_state$source$size() >= 3) {
break
}
}
out1 <- stream$writeable_state$source$as_list()[[1]]
out2 <- stream$writeable_state$source$as_list()[[2]]
out3 <- stream$writeable_state$source$as_list()[[3]]
expect_true(out1 == 5)
expect_true(identical(out2, list(a = 1, b = 2)))
expect_true(out3 == "foo")
rm(stream)
}
)
test_that("4.2.2 Writeable connection stream can be written to",
code = {
# file stream
temp <- tempfile()
stream <- WriteableStream$new(temp)
stream$write(5)
stream$write(list(a = 1, b = 2))
stream$write("foo")
out <- readLines(temp)
expect_true(out[[1]] == "5")
expect_true(out[[2]] == "1")
expect_true(out[[3]] == "2")
expect_true(out[[4]] == "foo")
}
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.