tests/testthat/test-4-writeable.R

# ~~~~~~~ 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")
    }
)
ElianHugh/emitters documentation built on Feb. 6, 2022, 4:55 a.m.